Возникла проблема, похожая на эту, при попытке получить уникальные имена методов с помощью ITest.У меня есть фабричный метод с поставщиком данных, определенный для тестирования одного и того же контрольного примера с несколькими данными.Когда я пытаюсь сгенерировать уникальные имена методов для каждого запуска теста, добавляя параметры, отвечающие за каждый запуск теста, используя ITest и getTestName ().Я вижу, что мой файл TEST-TESTSUIT.xml генерирует уникальные имена методов правильно, как показано ниже.
"1.1.1.1_testmethod_parameter1" time="0.252"
"1.1.1.1_testmethod_parameter2" time="0.252"
Но в файле Index.html я могу наблюдать повторяющееся значение, которое отвечает за последний прогон теста, добавленный длявсе тесты, как показано ниже.В файле index.html я вижу значение (1.1.1.20_login_parameter1), повторяющееся для всех результатов теста.
1.1.1.1_testmethod_parameter1 Test class: xxxxxxxx(1.1.1.20_login_parameter1) Test method: 1.1.1.1
1.1.1.1_testmethod_parameter1 Test class: xxxxxxxx(1.1.1.20_login_parameter1) Test method: 1.1.1.1
В чем может быть причина этого.Это ошибка на стороне testng.Можем ли мы исправить это с нашей стороны.Я пробовал различные подходы, предложенные в [1].Но у меня ничего не получалось.Оцените ваши идеи по этому поведению
Пример исходного кода, аналогичного тому, который я пробовал, приведен ниже
import org.testng.ITest;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Factory;
import org.testng.annotations.Test;
import java.lang.reflect.Method;
public class TestAPIDD implements ITest
{
private String apiName;
String testInstanceName = "";
Parameters tp;
@Factory(dataProvider="apiDataProvider")
public TestAPIDD(String apiName, String userName) {
tp = new Parameters(apiName, userName);
this.apiName = tp.getAPIName();
}
@DataProvider(name = "apiDataProvider")
public Object[][] dataProvider() {
return new Object[][] { { "multiResourceAPI", "publisher1" }, { "ma lformedAPI", "publisher2" }, { "wsdlAPI","admin" } };
}
/**
* Constructor for the class TestAPIDD
*/
public TestAPIDD() {
}
/**
* Login Test
*/
@Test(description="1.1.1.1")
public void testLogin()
{
System.out.println("USER NAME: "+ tp.getUserName());
Assert.assertTrue(true);
}
@Test(description="1.1.1.2")
public void testAPICreate()
{
System.out.println("APINAME: "+ tp.getAPIName());
this.helperMethod();
Assert.assertTrue(true);
}
@BeforeMethod(alwaysRun = true)
public void changeTestCaseName(Method method) {
testInstanceName = method.getAnnotation(Test.class).description() + "_" + method.getName() +"_"+ apiName;
}
private void helperMethod() {
System.out.println("TEST HELPER");
}
/**
* Implementation of the getTestName in org.testng.ITest Interface.
* This will set the name for the test case in TEST-TestSuite.xml
*/
public String getTestName() {
return testInstanceName;
}
}
Благодарим вас за помощь в устранении этой проблемы.Это ошибка на стороне Testng