我创建了一个方法级别的java自定义注释,如下所示
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Test {
public String id() default "0";
}
测试类:
public class test {
@Test
@Test(id = "231")
public void test_section(){
Assert.assertTrue(false);
}
}
我能够使用下面的代码行
来使用id的值result.getMethod().getConstructorOrMethod().getMethod().getAnnotation(Test.class).id();
现在我想创建一个类级自定义java注释,如下所示
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface section {
public String Name() default "0";
}
并在我的测试类中使用相同的注释,并在testng侦听器 ITestListener onTestStart方法中获取Name的值,因为我使用testng来执行测试用例,下面是测试类
@section(Name="u_id")
public class testcustom {
@Test
public void test_section(){
Assert.assertTrue(false);
}
}
我无法获取section的值,如何在类级别上使用的section注释中获取name的值?
答案 0 :(得分:1)
只需查看API,例如
void onTestStart(ITestResult result) {
section annotation = result.getTestClass().getRealClass().getAnnotation(section.class);
if (annotation != null) {
// do something with annotation.Name()
}
}
应该有用(请注意,Java命名约定意味着它应该是Section
和name()
)。