JUnit 预期异常测试:@Test(expected)

JUnit 提供了跟踪异常的功能,也可以检查代码是否抛出了预期异常。

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

  • @test 注解的可选参数(expected),以及
  • 为了跟踪信息,可以使用“fail()”

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

示例:@Test(expected=IllegalArgumentException.class)

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

使用 @test(expected) 的示例

让我们通过创建一个抛出异常的 Java 类来理解异常测试。您将在测试类中处理并测试它。考虑 JUnitMessage.java 有一个方法,它根据用户收到的输入简单地执行数学运算。如果输入任何非法参数,它将抛出“ArithmeticException”。见下文

Example using @Test

package guru99.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 类创建一个测试类来验证异常。

请看下面的测试类,它对上述 Java 类抛出的异常(这里是 ArithmeticException)进行单元测试

AirthematicTest.java

AirthematicTest.Java

package guru99.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:调用 JUnitMessage.java 的 printMessage()
  • 代码行 18:创建另一个方法来打印 HI 消息。

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

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

输出

以下是输出,显示测试成功,没有失败跟踪,如下所示

AirthematicTest.Java Output

摘要

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