SuperAPI AI 工具集

testing-strategies

测试与质量

查看项目

更新于 10-15 17:31

技能介绍

用途:为 Micronaut/Kotlin 后端提供测试模式参考,覆盖集成测试、仓储测试与测试数据构建器,适用于编写测试或搭建测试环境时查阅。

主要能力与规则:集成测试要求每个端点都有测试,继承 AbstractControllerTest,使用 module-client 的 Retrofit 客户端,并在 @AfterEach 中用 truncateAllTables() 清理;始终使用 Retrofit 客户端而非原始 HttpRequest,通过 accessToken() 生成真实 JWT,端到端测试完整 HTTP 栈,不 mock manager。测试命名采用反引号描述式,如 getEmployee - returns employee by id,配合 runBlocking。每个端点至少覆盖:正常路径、资源不存在返回 404、无 token 返回 401、软删除记录不被返回。仓储测试继承 AbstractRepositoryTest,至少覆盖 insert 正常路径、byId 存在/不存在/软删除后返回 null、deleteById 软删除、update 更新指定字段。MockK 规则:用 mockk<T>() 创建 mock,挂起函数用 coEvery/coVerify(不能用 every/verify),用 slot<T>() + capture() 校验传参,协程测试用 kotlinx.coroutines.test 的 runTest 而非 runBlocking,采用 AAA 注释模式,用 @Nested + @DisplayName 分组。

运行命令:./gradlew test 运行全部;./gradlew test --tests "com.yourcompany.EmployeeControllerTest" 运行单个类;./gradlew :app:module-repository:test 运行单个模块。

限制与注意:并行测试若报 cannot acquire connection,可将 maxPoolSize 提升到 20;MockK 对挂起函数误用 every/verify 会给出令人困惑的错误。更完整的 @MicronautTest 配置、Retrofit 客户端设置、连接池调优、MockK 代码示例、测试数据构建器与 AssertJ 断言见 integration-test-setup.md 与 examples.md。