TestNG 如何测试强制性异常
TestNG提供了一种跟踪代码异常处理的方式。用户可以测试代码是否抛出了预期的异常。这里使用expectedExceptions参数结合@Test注解。这个注解在负面/异常测试中非常有用。
根据TestNG文档:
“测试方法预期抛出的异常列表。如果没有抛出异常或抛出的异常与列表中的异常不同,则该测试将被标记为失败。”
在本文中,我们将看到如何在TestNG中实现expectedExceptions。
步骤
- 步骤1:在src中创建MessageUtil.java,该文件需要进行测试,并在printMessage()方法中添加错误条件,如程序代码中所示。
步骤2:在src中创建一个名为ExpectedExceptionTest.java的类,它是一个测试用例类,并将ArithmeticException作为预期异常添加到testPrintMessage()测试用例中。请按照下一节中的程序代码编写。
- 步骤3:现在,在IDE中创建并运行testNG.xml文件,或直接运行testNG类,或使用命令行进行编译和运行。
-
在输出中,用户可以看到测试通过,特别是testPrintMessage()测试。这个测试调用messageUtil.printMessage(); 并且prineMessage()函数会抛出Airthmatic异常,因为它有一个将1/0相除的步骤;
-
如果用户删除了/注释掉代码int b=1/a; 输出将无法通过,它会失败,如输出2所示。
示例
常规TestNG类的以下代码:
MessageUtil:
src/ MessageUtil.java
下面是用于常见的TestNG类的代码 − ExpectedExceptionTest :
src/ExpectedExceptionTest.java
testng.xml
这是一个配置文件,用于组织和运行TestNG的测试用例。
当只需要执行有限的测试而不是整个测试套件时,它非常方便。
输出
如果用户从messageUtil.printMessage()函数中删除/注释掉了代码int b=1/a;Output将无法通过,并且会失败,如Output 2所示。原因是@Test−testPrintMessage()期望抛出算术异常,但它并没有抛出任何异常。