如何在testng监听器java中使用自定义类注释

时间:2017-05-02 18:58:54

标签: java annotations testng

我创建了一个方法级别的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的值?

1 个答案:

答案 0 :(得分:1)

只需查看API,例如

void onTestStart(ITestResult result) {
  section annotation = result.getTestClass().getRealClass().getAnnotation(section.class);
  if (annotation != null) {
    // do something with annotation.Name()
  }
}

应该有用(请注意,Java命名约定意味着它应该是Sectionname())。