我已将通过TestNG执行的复杂UI测试框架添加到我们不拥有的大型企业应用程序中(我们是用户)。
测试框架从适合使用查询构建器进行测试的系统中解析数据;有时这些数据已经过时,它会抛出预期的异常。这些异常意味着测试无法完成,但并未真正失败。
我正在寻找一种方法来中止个别测试而不是失败。每次构建都会执行大约6次测试(稍作修改),所以我不担心每次构建是否会中止1-2次,而是需要对当前标记为失败的中止进行静音;除了让它们通过之外还有其他选择,这似乎是一个糟糕的选择吗?
答案 0 :(得分:1)
另外两个选项:)这些将有助于将测试标记为已跳过而非失败或已通过
在afterInvocation方法中实现IInvokedMethodListener 做点什么
public void afterInvocation(IInvokedMethod method,ITestResult testResult){
if(testResult.getThrowable().getClass().equals(YourExceptionClass.class))
testResult.setStatus(TestResult.SKIP);
}
答案 1 :(得分:0)
当然可以。您可以选择跳过失败的测试或忽略它们。
为此你需要一个实现IMethodInterceptor的类。
由于显而易见的原因,我无法粘贴我正在使用的任何代码,但请看一下如何使用IMethodInterceptor的示例:https://gist.github.com/krmahadevan/5028960
您没有提及您的问题,但如果您使用的是Jenkins,那么您可以将参数传递给构建版本,然后可以使用这些参数来过滤您尝试跳过/忽略的测试。
答案 2 :(得分:0)
使用try-catch处理测试类中可接受的异常。如果您捕获异常并且没有任何失败的断言,则测试将通过。