1

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

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

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

谢谢 ...

4

1 回答 1

1

根据失败的测试,抛出新的 SkipException 会IInvokedMethodListener2.beforeInvocation()产生与测试相同的结果(和报告):测试方法进入报告并被适当地标记为已跳过。所以测试方法不会被执行。

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

运行自定义包含和排除的BeanShell 表达式功能。

此外,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);
        }
    }
}

这将完全退出测试方法(即,测试计数减少)。但是您很可能需要注意禁用依赖方法链。可能还有其他方面需要考虑。

于 2013-05-31T18:39:16.870 回答