JUnit 5 @Test 注解
上次更新:2024 年 1 月 8 日
1. 概述
在本文中,我们将快速回顾 JUnit 的 @Test 注解。该注解为执行单元测试和回归测试提供了一个强大的工具。
2. Maven 配置
要使用 最新版本的 JUnit 5,我们需要添加以下 Maven 依赖
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.11.0-M2</version>
<scope>test</scope>
</dependency>
我们使用 test 范围,因为我们不希望 Maven 将此依赖包含在我们的最终构建中。
由于 surefire 插件仍然不能完全原生支持 JUnit 5,我们也需要 添加一个提供者,它告诉 Maven 在哪里查找我们的测试
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.0.2</version>
</dependency>
</dependencies>
</plugin>
在我们的配置中,我们将使用 surefire 2.19.1,因为在撰写本文时,版本 2.20.x 与 junit-platform-surefire-provider 不兼容。
3. 被测方法
首先,让我们构建一个简单的示例方法,我们将使用它来展示 @Test 注解的功能
public boolean isNumberEven(Integer number) {
return number % 2 == 0;
}
如果传递的参数是偶数,此方法应返回 true,否则返回 false。现在,让我们检查它是否按预期工作。
4. 测试该方法
对于我们的示例,我们想要专门检查两个场景
- 当给定一个偶数时,该方法应返回 true
- 当给定一个奇数时,该方法应返回 false
这意味着实现代码将使用不同的参数调用我们的 isNumberEven 方法,并检查结果是否是我们期望的结果。
为了使测试被识别为测试,我们将添加 @Test 注解。 我们可以在一个类中拥有任意数量的这些注解,但将相关的注解放在一起是一个好习惯。 另外请注意,测试不能是private,也不能返回值——否则它将被忽略。
考虑到这些因素,让我们编写我们的测试方法
@Test
void givenEvenNumber_whenCheckingIsNumberEven_thenTrue() {
boolean result = bean.isNumberEven(8);
Assertions.assertTrue(result);
}
@Test
void givenOddNumber_whenCheckingIsNumberEven_thenFalse() {
boolean result = bean.isNumberEven(3);
Assertions.assertFalse(result);
}
如果现在运行 Maven 构建,surefire 插件将遍历src/test/java 下的类中所有带有注解的方法并执行它们,如果发生任何测试失败,将导致构建失败。
如果您来自 JUnit 4,请注意,在这个版本中,注解不接受任何参数。 为了检查超时或抛出异常,我们将使用断言。
@Test
void givenLowerThanTenNumber_whenCheckingIsNumberEven_thenResultUnderTenMillis() {
Assertions.assertTimeout(Duration.ofMillis(10), () -> bean.isNumberEven(3));
}
@Test
void givenNull_whenCheckingIsNumberEven_thenNullPointerException() {
Assertions.assertThrows(NullPointerException.class, () -> bean.isNumberEven(null));
}
5. 结论
在本快速教程中,我们展示了如何使用 @Test 注解实现和运行一个简单的 JUnit 测试。
有关 JUnit 框架的更多信息,请参见 这篇文章,它提供了通用介绍。
支持本文的代码可在 GitHub 上获取。 一旦你以 Baeldung Pro 会员 身份登录,就开始学习并在项目上进行编码。















