JUnit异常测试之@Test(expected)注解

JUnit提供了跟踪异常并检查代码是否抛出预期异常的工具。

Junit4为异常测试提供了一种简单易读的方法,可以使用

  • @test注解的可选参数 (预期)和
  • 要跟踪信息,可以使用“fail()”

在测试异常时,需要确保在@test注释的可选参数中提供的Exception类是相同的。这是因期望单元测试的方法会出现异常,否则我们的JUnit测试将失败。

Example @Test (expected=IllegalArgumentException.class)

通过使用“expect”参数,可以指定我们的测试可能抛出的异常名称。在上面的示例中,使用的是“IllegalArgumentException”,如果开发人员使用了不允许的参数,测试将抛出该异常。

使用@test(expected) 的示例

让我们通过使用抛出异常的方法创建一个Java类来理解异常测试。可以考虑JUnitMessage.java,如下所示:

JUnit Exception Test
JUnit Exception Test
package guru.junit;
public class JUnitMessage {
    private String message;
    public JUnitMessage(String message) {
        this.message = message;
    }
    public void printMessage() {
        System.out.println(message);
        int divide=1/0;
    }
    public String printHiMessage() {
        message="Hi!" + message;
 
        System.out.println(message);
        return message;
    }
}

代码说明:

  • 代码行7:使用字段初始化创建参数化构造函数。
  • 代码行11-14:创建数学运算的方法。
  • 代码行18:创建另一个打印消息的方法。
  • 代码行20:创建用于打印消息的新字符串。
  • 代码行21:打印在第20行创建的新消息。

让我们为上述java类创建一个测试类来验证异常。

参见下面的测试类到单元测试异常(这里是ArithmeticException)从java类抛出:

AirthematicTest.java

JUnit Exception Test
JUnit Exception Test
package guru.junit;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class AirthematicTest {
    public String message = "Saurabh";
 
    JUnitMessage junitMessage = new JUnitMessage(message);
 
    @Test(expected = ArithmeticException.class)
    public void testJUnitMessage() {
        System.out.println("Junit Message is printing ");
        junitMessage.printMessage();
    }
    @Test
    public void testJUnitHiMessage() {
        message="Hi!" + message;
        System.out.println("Junit Message is printing ");
        assertEquals(message, junitMessage.printMessage());
 
    }
}

代码说明:

  • 代码行13:使用@Test注释创建我们的测试。当在上面执行时,预计会出现算术异常,因此将其作为参数列在@Test中。
  • 代码行17:调用 printMessage()
  • 代码行18:创建另一个打印HI消息的方法。

如果执行此测试类,则使用每个定义的参数执行测试方法。在上面的示例中,测试方法执行了五次。

让我们执行它并验证结果。参见下面的测试运行器类以执行JunitTestExample.java

输出:

以下是显示测试成功且没有故障跟踪的输出,如下所示:

JUnit Exception Test
JUnit Exception Test

总结:

  • 异常测试是JUnit4中引入的一个特殊特性。在本教程中,了解了如何使用@ test(excepted) 测试JUnit中的异常
  • Junit提供了跟踪异常以及检查代码是否抛出异常的功能
  • 对于异常测试,可以使用
    • @test注解的可选参数 (预期)和
    • 要跟踪信息,可以使用“ fail() ”

IT赶路人

专注IT知识分享