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