まだこれに直面している人のために。
これはorg.testng.ITest
、@ Cedricが言及しているように、クラスを実装し、getTestName()メソッドをオーバーライドすることで実行できます。
テスト名を動的にするには、ローカルで作成されたtestName
変数を使用できます。
以下はあなたがする必要があるすべてです
import java.lang.reflect.Method;
import org.testng.ITest;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
public class MyTestClass implements ITest {
@Test(dataProvider = "/* yourDataProvider */")
public void myTestMethod() {
//Test method body
}
@BeforeMethod(alwaysRun = true)
public void setTestName(Method method, Object[] row) {
//You have the test data received through dataProvider delivered here in row
String name = resolveTestName(row);
testName.set(name);
}
@Override
public String getTestName() {
return testName.get();
}
private ThreadLocal<String> testName = new ThreadLocal<>();
}
このようにして、testNameを動的に生成できるはずです。