JUnit提供了跟踪异常并检查代码是否抛出预期异常的工具。
Junit4为异常测试提供了一种简单易读的方法,可以使用
- @test注解的可选参数 (预期)和
- 要跟踪信息,可以使用“fail()”
在测试异常时,需要确保在@test注释的可选参数中提供的Exception类是相同的。这是因期望单元测试的方法会出现异常,否则我们的JUnit测试将失败。
Example @Test (expected=IllegalArgumentException.class)
通过使用“expect”参数,可以指定我们的测试可能抛出的异常名称。在上面的示例中,使用的是“IllegalArgumentException”,如果开发人员使用了不允许的参数,测试将抛出该异常。
使用@test(expected) 的示例
让我们通过使用抛出异常的方法创建一个Java类来理解异常测试。可以考虑JUnitMessage.java,如下所示:

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

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
输出:
以下是显示测试成功且没有故障跟踪的输出,如下所示:

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