我有一个下面的示例代码,我试图在after方法中读取testid,对于没有参数的方法,它运行良好,但我的方法将Map作为参数..并且它失败了。我无法弄清楚如何在Aftermethod中读取这个用于参数化方法的testid.-
另外在testng中如果说test1失败了,那么由于dependonMethod将跳过test2我怎样才能在aftermethod中读取这个跳过的方法注释值?
@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());
}
您需要将getMethod与参数类型一起使用:
sampletest.class.getMethod(methodName).
getAnnotation(UseAsTestRailId.class, Map.class);
来自javadoc的报价:
public Method getMethod(String name,
Class<?>... parameterTypes)
throws NoSuchMethodException,
SecurityException
返回一个Method对象,该对象反映类或接口的指定公共成员方法
由此Class对象表示。 name参数是一个String,指定所需方法的简单名称。 parameterTypes参数是一个Class对象数组,它按声明的顺序标识方法的形式参数类型。如果parameterTypes为null,则将其视为空数组。