0

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

测试框架解析来自系统的数据,适合使用查询构建器进行测试;有时该数据已过时并且会引发预期的异常。这些异常意味着测试无法完成,但并没有真正失败。

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

4

3 回答 3

1

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

  1. 捕获您期望的异常并从您的 @Test 方法中抛出一个 SkipException 或
  2. 实现 IInvokedMethodListener 并在 afterInvocation 方法中执行类似的操作

    public void afterInvocation(IInvokedMethod 方法, ITestResult testResult) {

    if(testResult.getThrowable().getClass().equals(YourExceptionClass.class))
         testResult.setStatus(TestResult.SKIP);
    

    }

于 2014-05-21T06:37:38.233 回答
0

当然。您可以选择跳过失败的测试或直接忽略它们。

为此,您将需要一个实现 IMethodInterceptor 的类。

由于显而易见的原因,我无法粘贴我正在使用的任何代码,但请查看此处以获取有关如何使用 IMethodInterceptor 的示例:https ://gist.github.com/krhadevan/5028960

您没有提及您的问题,但是如果您使用的是 Jenkins,那么您可以将参数传递给构建,然后可以将其用于过滤您尝试跳过/忽略的测试。

于 2014-05-21T05:14:02.167 回答
0

使用 try-catch 处理测试类中可接受的异常。如果您捕获了异常并且没有任何失败的断言,则测试将通过。

于 2014-05-21T05:40:58.460 回答