TestNG会自动禁用测试

时间:2012-11-01 09:51:42

标签: unit-testing testng

我目前正致力于使用新的Adobe Flex 4.8构建Flexmojos项目。问题是,4.8使用一个功能不再可用。如果我针对此sdk运行单元测试,则构建将失败。我可以完全禁用运行测试,但我想保留它们,因为它们测试旧的Flex SDK的重要功能。

如果不满足前提条件,是否有办法自动跳过测试?我正在考虑调用一些方法来决定是否应该执行测试。或者,我可以设置一个环境变量。如果还有其他选择,我很乐意听到。

克里斯

1 个答案:

答案 0 :(得分:3)

我可以想到在testNg中执行此操作的一种方法是使用IAnnotationTransformer侦听器。基本上,您可以在运行时操作注释。这是一个例子:

监听器:

public class SampleAnnotationTransformer implements IAnnotationTransformer {

@Override
public void transform(ITestAnnotation iTestAnnotation, Class aClass, Constructor constructor, Method method) {

    if(method != null){
        if(!isThisTestCompatible(method)){
            //diable the test case.
            iTestAnnotation.setEnabled(false);
        }
    }

}

private boolean isThisTestCompatible(Method method){
    //your logic goes here...
    return false;
}
}

在testNG中配置上面的侦听器,如下所示:

<suite name="Suit" verbose="1">
<listeners>
    <listener class-name="SampleAnnotationTransformer" />
</listeners>

//test cases...

值得在http://testng.org/doc/documentation-main.html#testng-listeners

检查其他听众