通过Annotation Transformer:TestNG禁用特定测试

时间:2016-02-01 05:33:28

标签: java testing junit annotations testng

我有一个包含大量测试用例的庞大项目。一些测试用例假设仅适用于特定环境,有些则不适用。所以我试图跳过或禁用不属于该环境的测试。

我正在使用Annotation Transformers来覆盖@Test的行为。

这是

中的Transformer代码
package com.raghu.listener

public class SkipTestsTransformer implements IAnnotationTransformer {
    public void transform(ITestAnnotation annotation, Class testClass,
            Constructor testConstructor, java.lang.reflect.Method testMethod){

//          I intend to do this later
//          if(someCondition){
//              // Do something.
//          }
                System.out.println("Inside Transform");
    }
}

截至目前,我只是想打印。

我有许多包和类,我必须强加这个Transformer。

我应该如何以及在哪里开设这门课程?

请建议任何更好的方法来做同样的事情。

提前致谢

1 个答案:

答案 0 :(得分:1)

IAnnotationTransformer是一个监听器。你不需要实例化它,testng会为你做。您可以通过xmls或服务加载器以任何列出的方式here.指定侦听器,具体取决于您的测试环境。

如果您的测试用例中没有标记组,那么我认为这是将enabled属性设置为false的方法。还有另一种方法可以跳过IInvokedMethodListener中的测试,但是我没有看到任何一个优于另一个的好处。