我可以从IInvokedMethodListener2的beforeInvocation方法“停止”运行测试吗?
我在beforeInvocation中使用“throw new SkipException”做了一些软跳过,但是我需要做“硬跳过” - 停止测试而没有任何执行痕迹。
我首先需要检查一些测试方法的注释,然后运行或不运行该特定测试。
谢谢...
答案 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);
}
}
}
这将完全选择退出测试方法(即测试计数减少)。 但是你很可能需要处理禁用依赖方法链的问题。可能还有其他方面需要考虑。