TestNG失败并非失败

时间:2014-05-21 05:05:39

标签: java testng ui-testing

我已将通过TestNG执行的复杂UI测试框架添加到我们不拥有的大型企业应用程序中(我们是用户)。

测试框架从适合使用查询构建器进行测试的系统中解析数据;有时这些数据已经过时,它会抛出预期的异常。这些异常意味着测试无法完成,但并未真正失败。

我正在寻找一种方法来中止个别测试而不是失败。每次构建都会执行大约6次测试(稍作修改),所以我不担心每次构建是否会中止1-2次,而是需要对当前标记为失败的中止进行静音;除了让它们通过之外还有其他选择,这似乎是一个糟糕的选择吗?

3 个答案:

答案 0 :(得分:1)

另外两个选项:)这些将有助于将测试标记为已跳过而非失败或已通过

  1. 捕获您期望的异常并从@Test方法抛出SkipException 或
  2. 在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处理测试类中可接受的异常。如果您捕获异常并且没有任何失败的断言,则测试将通过。