springboot单元测试不使用是@springbootTest
时间: 2024-08-12 17:03:39 浏览: 120
springboot使用单元测试实战
Spring Boot 的单元测试通常使用 `@SpringBootTest` 或者 `@WebMvcTest` 标签来进行,它们分别用于测试整个 Spring 应用上下文(包括数据库、集成等)以及仅仅局限于 Web MVC 层次。然而,如果你想要编写纯的组件或服务层的单元测试,而不涉及完整的 Spring 容器和依赖注入,这时可以不用 `@SpringBootTest`。
`@ComponentScan` 或者 `@SpringBootTest(classes=...)` 这样的注解会启动完整的 Spring 容器,这在进行端到端集成测试时很有帮助,但在进行纯粹的业务逻辑验证时可能会显得过于冗余。此时,你可以选择使用 Java 的标准 JUnit 测试框架配合 Mockito 等工具,创建独立于 Spring 的测试类,并手动创建需要测试的对象实例。例如:
```java
import org.junit.Test;
import static org.mockito.Mockito.*;
// ...
@Service
public class MyService {
// ...
}
@Test
public void testMyService() {
// 创建 mock 对象
MyService myService = mock(MyService.class);
// 模拟 service 方法的行为
when(myService.someMethod()).thenReturn("expected result");
// 调用并验证结果
String result = myService.someMethod();
assertEquals("expected result", result);
}
```
阅读全文