1

DataProvider メソッドで Test メソッドのパラメータ名を取得したいと考えています。DataProvider で使用method.getParameterTypes()することで、Test メソッドで渡される param のクラスを取得できますが、名前が必要です。

@Test
public void TC_001(String userName, String passWord){
//code goes here
}

@DataProvider
public Object[][] testData(Method method){
//Here I want to get names of param of test method i.e. userName and passWord
}

これらの名前を使用して Excel ファイルからデータを取得できるため、これが必要です。

4

1 に答える 1

0

リフレクションを使用してメソッドからパラメーターを取得し、パラメーター名を取得できます。

@DataProvider
public Object[][] testData(Method method){
    String arg0 = method.getParameters()[0].getName();
    // should be "userName" in your example test case
}

-g:varsデバッグ情報にパラメーター名を含めるには、クラスをコンパイルする必要があることに注意してください。それ以外の場合、パラメーター名はarg0, arg1, ... という名前になります。OpenJDK 8 では、これがデフォルトのようです。

その事実にあまり依存せず、名前の混乱や競合の可能性を避けるために、引数名を指定する (カスタム) 注釈を使用します。

注釈を定義します。

@Retention(RUNTIME)
@Target(PARAMETER)
public @interface ParamName {
    public String value();
}

これを使って:

public void TC_001(@ParamName("username") String userName, String passWord) { ... }

名前にアクセスします。

Parameter parameter = method.getParameters()[0];
ParamName parameterNameAnn = parameter[0].getAnnotation(ParamName.class);
String parameterName;

if (parameterNameAnn != null) {
    // get the annotated name
    parameterName = parameterNameAnn.value();
} else {
    // annotation missing, resort to the "reflected" name
    parameterName = parameter.getName();
}

こちらもご覧ください

于 2017-06-18T14:06:35.237 に答える