从beforeInvocation方法停止Testng测试

时间:2013-05-24 10:40:48

标签: java selenium testing testng

我可以从IInvokedMethodListener2的beforeInvocation方法“停止”运行测试吗?

我在beforeInvocation中使用“throw new SkipException”做了一些软跳过,但是我需要做“硬跳过” - 停止测试而没有任何执行痕迹。

我首先需要检查一些测试方法的注释,然后运行或不运行该特定测试。

谢谢...

1 个答案:

答案 0 :(得分:1)

IInvokedMethodListener2.beforeInvocation()中抛出新的SkipException会产生与测试相同的结果(和报告),具体取决于测试失败:测试方法会生成报告并被正确标记为已跳过。因此测试方法不会被执行。

如果不够难,我建议测试排除,而不是跳过。有

BeanShell expression feature运行自定义包含和排除。

此外,IAnnotationTransformer允许您在运行时禁用(相当于“enabled = false”属性)测试方法,最简单的示例是:

public class SkippingTransformer implements IAnnotationTransformer {
    @Override
    public void transform(ITestAnnotation ita, Class type, Constructor c, Method method) {
        if(method.getName().startsWith("skipMe")) {
            ita.setEnabled(false);
        }
    }
}

这将完全选择退出测试方法(即测试计数减少)。 但是你很可能需要处理禁用依赖方法链的问题。可能还有其他方面需要考虑。