用途:为 Spring Boot 服务提供 TDD 工作流,覆盖单元测试与集成测试,目标覆盖率 80% 以上(JaCoCo 强制执行)。
适用场景:新功能或 API 端点开发;Bug 修复或重构;添加数据访问逻辑或安全规则。
工作流:先写会失败的测试,再实现通过测试的最简代码,然后在测试通过的前提下重构,并用 JaCoCo 检查覆盖率。
主要能力与用法:
- 单元测试用 JUnit 5 + Mockito,示例注解 @ExtendWith(MockitoExtension.class),配合 @Mock、@InjectMocks;采用准备-执行-断言模式,避免部分 Mock,优先显式打桩,用 @ParameterizedTest 处理用例变体。
- Web 层用 MockMvc,@WebMvcTest(MarketController.class) 搭配 @Autowired MockMvc、@MockBean,用 jsonPath 断言 JSON 响应。
- 集成测试用 @SpringBootTest + @AutoConfigureMockMvc + @ActiveProfiles("test")。
- 持久层用 @DataJpaTest,@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) 配合 @Import(TestContainersConfig.class);Testcontainers 使用可复用的 Postgres/Redis 容器镜像生产环境,并通过 @DynamicPropertySource 把 JDBC URL 注入 Spring 上下文。
- 覆盖率通过 JaCoCo Maven 插件(版本 0.8.14)执行 prepare-agent 并在 verify 阶段生成 report。
- 断言优先使用 AssertJ 的 assertThat,异常用 assertThatThrownBy(...),JSON 用 jsonPath。
- 可用测试数据生成器(如 MarketBuilder)构造测试数据。
- CI 命令:Maven 用 mvn -T 4 test 或 mvn verify;Gradle 用 ./gradlew test jacocoTestReport。
限制与说明:测试应保持快速、隔离、确定性,测试行为而非实现细节。资料未提供具体安装命令、收费或平台信息。