TestNG 为什么允许多个预期异常

TestNG 为什么允许多个预期异常

TestNG支持在单个@Test方法中抛出多个异常。这类似于Java中的catch异常,用户可以指定可能抛出的多个异常类。

例如,在catch异常中的语法是:

catch(IOException | InterruptedException ex) {

类似地,在TestNG中的语法是:

@Test(expectedExceptions={NullPointerException.class,IllegalArgumentException.class })
public void throwsNullPointer() {
    throw new NullPointerException();
}

需要注意的一点是,在这种情况下,TestNG期望从列表中抛出异常之一。如果异常与列表中的异常不同或者没有异常,方法将失败。如果按照列表中的要求抛出异常,方法将通过。

如果没有抛出预期的异常,错误示例如下:

方法 throwsNullPointer()[pri:0, instance:OrderofTestExecutionInTestNG@3567135c]应该抛出任何一种类型的异常[class java.lang.NullPointerException, class java.lang.IllegalArgumentException]

在本文中,我们将说明支持一个测试方法中同时抛出多个异常的可能原因。

  • 第一个原因是提供与Java中catch语句类似的功能。它允许用户在方法级别处理异常,并且可以避免在实际代码中使用try catch块。

  • 有时,代码很复杂,可能在独特的情况下抛出异常。为了处理这种情况,拥有这种功能是很好的。

  • 一个通用的原因是测试一个功能的多个实现,这些实现可能根据所提供的输入导致不同的异常。这些实现可以是不同的类或同一个类的不同版本。

  • 当测试的代码依赖于第三方软件,并且必须使用软件的多个版本进行测试时,这个功能非常有用。不同的行为应该在不同的数据中测试通过软件。

  • 当用户需要对接口规范不明确的API或功能进行“黑盒”测试时,这个功能也很有用。

  • 在执行效率优化代码时非常方便,例如覆盖异常处理的单元测试。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

TestNG 精选笔记