我有一个下面的示例代码,我尝试在after方法中读取testid,对于没有参数的方法,它很好用,但是我的方法将Map作为参数..并且失败了。 我无法弄清楚如何在Aftermethod中读取该方法的参数化方法。-
还在testng中,如果说test1失败,则由于dependonMethod而将跳过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());
}
答案 0 :(得分:1)
您需要对参数类型使用getMethod:
sampletest.class.getMethod(methodName).
getAnnotation(UseAsTestRailId.class, Map.class);
javadoc报价:
public Method getMethod(String name,
Class<?>... parameterTypes)
throws NoSuchMethodException,
SecurityException
返回反映指定公共成员的Method对象 类或接口的方法
由该Class对象表示。 name参数是一个字符串 指定所需方法的简单名称。 parameterTypes 参数是Class对象的数组,用于标识方法的 形式参数类型,按声明的顺序。如果parameterTypes为null, 将其视为空数组。