使用Kotlin (Spring Boot) + MockMVC + DatabaseRider輕鬆實現API整合測試
在本文中,我將介紹如何對使用伺服器端 Kotlin(Spring Boot)建立的 Web API 進行 API 整合測試。透過結合MockMVC和DatabseRider,可以輕鬆實現API整合測試。
MockMVC
MockMVC 是 Spring Test 中包含的測試框架之一。無需手動向實現的伺服器傳送請求即可進行 API 測試。
MockMVC 需要 @AutoConfigureMockMvc 和 @SpringBootTest 進行初始化。
class SampleTest { @SpringBootTest @AutoConfigureMockMvc @TestInstance(TestInstance.Lifecycle.PER_CLASS) class Get { @Autowired lateinit var mockMvc: MockMvc @BeforeAll fun reset() = //每次測試時執行的操作 @Test fun test() { } } } |
使用 MockMvc 傳送請求引數如下。還可以評估響應狀態和響應正文。
val response = mockMvc.perform( MockMvcRequestBuilders .get("/path/to/api") .contentType(MediaType.APPLICATION_JSON) ).andReturn().response val actualStatus = response.status val actualResponseBody = response.contentAsString |
DatabaseRider
DatabaseRider 是一個 Java 庫,它允許您使用註釋簡潔地編寫 DB 測試。如下圖,註解可以讓你插入輸入資料,測試後期待DB,測試完成後將表寫入檔案。這意味著您可以在測試之前指定要插入資料庫的資料,並在測試之後比較資料庫應該是什麼。E2E API測試除了能保證響應外,還能保證DB狀態,與API測試非常相容。
@Test @DBRider @DataSet("path/to/input/data.{yml,csv,cml}")// 指定輸入資料檔案 @ExpectedDataSet( value = ["path/to/expected/data.{yml,csv,cml}"], //指定預期資料的檔案 orderBy = ["id"]。 ignoreCols = ["createdAt", "upedAt"], // 忽略後設資料 ) // 注意:一旦資料被匯出,註釋掉 @ExportDataSet( format = DataSetFormat.YML, // 指定測試完成後資料匯出的格式。 outputName = "path/to/export/data.{yml,csv,cml}", // 指定要匯出的檔案。 includeTables = ["customer"] // 指定要包括的列 ) fun `test`() { // 編寫測試。 } |
更多見:Github
相關文章
- 使用Spring Boot、Kotlin和OpenFeign實現型別安全API測試Spring BootKotlin型別API
- 如何在Spring Boot中實現整合測試?Spring Boot
- 整合測試時 MockMvc 無法注入MockMVC
- spring boot 整合測試Spring Boot
- 輕鬆實現報表整合
- Spring Boot Event 觀察者模式,輕鬆實現業務解耦!Spring Boot模式解耦
- Spring Boot整合Postgres實現輕量級全文搜尋Spring Boot
- Mokito 單元測試與 Spring-Boot 整合測試Springboot
- Spring Boot 構建 Restful API 和測試Spring BootRESTAPI
- 使用Spring Boot REST API進行測試驅動開發Spring BootRESTAPI
- 使用Spring整合Quartz輕鬆完成定時任務Springquartz
- 八、Spring Boot整合Spring Security之前後分離認證最佳實現對接測試Spring Boot
- Spring Boot單元和整合測試概述 | rieckpilSpring BootKPI
- spring boot使用Jedis整合Redis實現快取(AOP)Spring BootRedis快取
- 使用Spring Boot實現資料庫整合配置案例Spring Boot資料庫
- Spring、Spring Boot和TestNG測試指南 – 整合測試中用Docker建立資料庫Spring BootDocker資料庫
- Spring Boot Security 整合 JWT 實現 無狀態的分散式API介面Spring BootJWT分散式API
- Spring Boot(十八):使用 Spring Boot 整合 FastDFSSpring BootAST
- Kotlin 與 Spring boot整合,@Value的問題KotlinSpring Boot
- Spring Boot整合Zuul API閘道器Spring BootZuulAPI
- Spring Boot乾貨系列:(十二)Spring Boot使用單元測試Spring Boot
- Spring Boot整合MyBatis實現通用MapperSpring BootMyBatisAPP
- Spring Boot 整合 Redis 實現快取操作Spring BootRedis快取
- 使用 Postman 實現 API 自動化測試PostmanAPI
- Spring Boot(七):spring boot測試介紹Spring Boot
- 使用 Spring Boot 進行單元測試Spring Boot
- 如何使用Spring Boot,Spring Data和H2 DB實現REST APISpring BootRESTAPI
- Spring Boot整合Hystrix實現服務容錯Spring Boot
- 使用Spring Boot整合ConsulSpring Boot
- Spring Boot中實現乾淨API響應Spring BootAPI
- Spring Boot(十二):Spring Boot 如何測試打包部署Spring Boot
- Spring Boot 整合 Elasticsearch 實戰Spring BootElasticsearch
- Spring Boot整合Spring Cloud Task實現批處理操作Spring BootCloud
- 使用Spring Boot實現模組化Spring Boot
- Spring Boot 單元測試Spring Boot
- Spring Boot 中測試 CORSSpring BootCORS
- Spring、Spring Boot和TestNG測試指南 – 共享測試配置Spring Boot
- Spring Boot 整合 Flyway 實現資料庫版本控制Spring Boot資料庫