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