Найти параметризованный метод в модульном тесте через отражение - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть пример кода ниже, где я пытаюсь прочитать тестовый метод in after, для метода без параметров он работает хорошо, но у моих методов есть Map в качестве параметра ... и он не работает.Я не могу понять, как прочитать этот testid в Aftermethod для параметризованного метода .-

Также в testng, если скажем, что test1 не удался, то test2 будет пропущен из-за зависимость от метода. Как я могу все еще прочитать значение аннотации этого пропущенного методав последствии ??

@Data(testId = 1623)
@Test(description = "test 1")
public void readTestAnnotation(Map<String,String> inputData) {
    logger.assertTrue(true, " test pass");
    logger.assertAll();
}


@Data(testId = 1645)
@Test(dependsOnMethods= {"readTestAnnotation"},  description = "test 
2")
public void readTestAnnotation1(Map<String,String> inputData) {
    logger.assertTrue(true," test failed");
    logger.assertAll();
}


@Data(testId = 1646)
@Test(dependsOnMethods = {"readTestAnnotation1"}, description = 
"test3")
public void readTestAnnotation2(Map<String,String> inputData) {
    logger.assertTrue(true," test failed");
    logger.assertAll();
}


 @AfterMethod(alwaysRun = true)
public void readtestId(ITestResult tr) throws NoSuchMethodException, 
SecurityException {
String methodName = tr.getMethod().getMethodName();
UseAsTestId ta = 
sampletest.class.getMethod(methodName).
   getAnnotation(UseAsTestRailId.class);

    System.out.println(ta.testRailId());

 }

1 Ответ

0 голосов
/ 19 февраля 2019

Вам необходимо использовать getMethod с типами параметров:

sampletest.class.getMethod(methodName).
   getAnnotation(UseAsTestRailId.class, Map.class);

Цитата из javadoc:

public Method getMethod(String name,
                         Class<?>... parameterTypes)
                  throws NoSuchMethodException,
                         SecurityException

Возвращает объект Method, который отражает указанный открытый метод-членкласс или интерфейс

, представленный этим объектом класса.Параметр name представляет собой строку, определяющую простое имя нужного метода.Параметр parameterTypes - это массив объектов Class, которые идентифицируют формальные типы параметров метода в объявленном порядке.Если parameterTypes имеет значение null, он обрабатывается так, как если бы он был пустым массивом.

...