JUnit 教程 | Java 的测试框架

2024年8月28日 | 阅读 4 分钟

JUnit 教程通过示例提供了关于Java 中单元测试的基本和高级概念。我们的 JUnit 教程专为初学者和专业人士设计。

它是一个面向 Java 程序员的开源测试框架。Java 程序员可以创建测试用例并测试他/她自己的代码。

它是单元测试框架之一。当前版本是 JUnit 4。

要执行单元测试,我们需要创建测试用例。单元测试用例是一段确保程序逻辑按预期工作的代码。

org.junit 包包含许多用于 JUnit 测试的接口和类,例如 Assert、Test、Before、After 等。


单元测试的类型

有两种方法可以执行单元测试:1) 手动测试 2) 自动化测试。

1) 手动测试

如果您在没有任何工具支持的情况下手动执行测试用例,则称为手动测试。它耗时且不太可靠。

2) 自动化测试

如果您通过工具支持执行测试用例,则称为自动化测试。它快速且更可靠。


Junit 测试的注解

Junit 4.x 框架基于注解,因此让我们看看在编写测试用例时可以使用的注解。

@Test 注解指定该方法是测试方法。

@Test(timeout=1000) 注解指定如果该方法花费的时间超过 1000 毫秒(1 秒),则该方法将失败。

@BeforeClass 注解指定该方法仅在开始所有测试之前调用一次。

@Before 注解指定该方法将在每个测试之前调用。

@After 注解指定该方法将在每个测试之后调用。

@AfterClass 注解指定该方法仅在完成所有测试后调用一次。


Assert 类

org.junit.Assert 类提供了断言程序逻辑的方法。

Assert 类的方法

Assert 类的常用方法如下

  1. void assertEquals(boolean expected,boolean actual):检查两个原始类型/对象是否相等。它已重载。
  2. void assertTrue(boolean condition):检查条件是否为真。
  3. void assertFalse(boolean condition):检查条件是否为假。
  4. void assertNull(Object obj):检查对象是否为空。
  5. void assertNotNull(Object obj):检查对象是否不为空。

所需的 jar 文件

您需要加载 junit4.jarhamcrest-core.jar 文件。

下载 junit jar 文件


Eclipse IDE 中的简单 JUnit 示例

让我们看看此示例的目录结构。

directory structure of junit example in eclipse

编写程序逻辑

让我们编写逻辑来找到一个数组的最大数。


编写测试用例

在这里,我们使用 JUnit 4,因此无需继承 TestCase 类。主要的测试代码写在 testFindMax() 方法中。但是我们也可以在每个测试之前和之后执行一些任务,正如您在给定的程序中看到的那样。

要运行此示例,请右键单击 TestLogic 类 -> Run As -> 1Junit Test

Output:Assertion Error

让我们看看在 Eclipse IDE 中显示的输出。

junit example in eclipse with output

如您所见,当我们传递负值时,它会抛出 AssertionError,因为第二次 findMax() 方法返回 0 而不是 -1。这意味着我们的程序逻辑不正确。


正确的程序逻辑

如您所见,找到给定数组的最大数的程序逻辑不正确,因为它在负值的情况下不返回 -1。正确的程序逻辑如下所示

如果您再次运行 junit 程序,您将看到以下输出。

example of junit framework with output

JUnit 框架的另一个例子

编写程序代码

编写测试用例

Output:before class
       before
       test case find max
       after
       before
       test case cube
       after
       before
       test case reverse word
       after
       after class