返回
Spring Boot 单元测试(一)—— 用好 JUnit5,玩转单元测试
后端
2023-11-25 05:07:44
- 前言
单元测试对于任何软件项目来说都是非常重要的,它可以帮助我们及时发现代码中的问题,并提高代码的质量。在 Spring Boot 中,我们可以使用 JUnit5 来进行单元测试。JUnit5 是一个非常强大的单元测试框架,它提供了许多有用的特性,例如:
- 注解驱动的测试
- 断言
- 模拟
- 参数化测试
2. 配置单元测试
在 Spring Boot 中,我们可以通过在项目中添加 spring-boot-starter-test
依赖来配置单元测试。这个依赖会自动为我们引入 JUnit5 和 Mockito 等必要的库。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
3. 编写单元测试
要编写一个单元测试,我们需要创建一个测试类,并使用 @RunWith(SpringRunner.class)
注解来指定要使用的单元测试框架。
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@ExtendWith(SpringExtension.class)
@SpringBootTest
public class MyUnitTest {
@Test
public void testSomething() {
// 这里编写测试代码
}
}
在测试类中,我们可以使用 @Test
注解来标记测试方法。测试方法中,我们可以编写测试代码来验证我们的代码是否正常工作。
4. 使用 Mockito 模拟对象行为
在单元测试中,我们经常需要模拟对象的行为。我们可以使用 Mockito 来轻松地做到这一点。
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.boot.test.context.SpringBootTest;
@ExtendWith(MockitoExtension.class)
@SpringBootTest
public class MyUnitTest {
@Mock
private MyService myService;
@Test
public void testSomething() {
// 这里编写测试代码
}
}
在测试类中,我们可以使用 @Mock
注解来模拟对象行为。然后,我们就可以在测试方法中使用这个模拟对象来编写测试代码。
5. 运行单元测试
我们可以通过使用 mvn test
命令来运行单元测试。如果测试通过,我们将看到以下输出:
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
如果测试失败,我们将看到以下输出:
[INFO] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
[ERROR] MyUnitTest.testSomething() Time elapsed: 0.001 s <<< ERROR!
java.lang.AssertionError: expected:<1> but was:<2>
6. 总结
本文介绍了如何使用 JUnit5 进行单元测试,以及如何使用 Mockito 来模拟对象行为。希望这篇文章能够帮助您更好地编写单元测试。