# Junit 预期异常测试用例示例

> 原文： [https://howtodoinjava.com/junit/junit-testcases-which-expects-exception-on-runtime/](https://howtodoinjava.com/junit/junit-testcases-which-expects-exception-on-runtime/)

[**Junit**](//howtodoinjava.com/junit/ "junit tutorials") 是 Java 编程语言的单元测试框架。 如果您想阅读有关[**最佳实践**](//howtodoinjava.com/category/best-practices/ "best practices guides")的信息，以进行 junit 测试，那么这里是一份出色的[**指南**](//howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/ "Unit testing best practices : Junit Reference guide")供您参考。

在本文中，我正在编写一个示例测试用例，期望在运行时引发异常。 如果它获得预期的异常，则测试通过。 如果未检测到预期的异常，则测试用例失败。

如果您希望应用因非常荒谬的输入而失败，这些类型的测试用例将非常有用。

```java
package com.howtodoinjava.test.junit;

import org.junit.Test;

public class ExpectedExceptionTest
{
	//This test case fails because it was expecting ArithmeticException
	@Test(expected = ArithmeticException.class)
	public void expectArithmeticException()
	{
		System.out.println("Everything was fine here !!");
	}

	//This test case fails because it was expecting ArithmeticException
	@Test(expected = ArithmeticException.class)
	public void expectArithmeticException2()
	{
		throw new NullPointerException();
	}

	//This test case passes because it was expecting NullPointerException
	@Test(expected = NullPointerException.class)
	public void expectNullPointerException()
	{
		//some code which throw NullPointerException in run time
		throw new NullPointerException();
	}
}

```

在上述 3 个测试用例中，前两个失败是因为他们期望`ArithmeticException`，而在执行测试用例时并没有得到。

第三个测试用例获得通过，因为它期望`NullPointerException`并被测试用例抛出。

这样，您可以编写依赖于某些异常的测试用例，以测试失败时应用的行为。

**祝您学习愉快！**