跳转至

總結

單元測試的特性和注意事項

  • 可以被自動化運行
  • 單元測試彼此獨立
  • 測試結果穩定 ,不受外部服務影響

JUnit5

  • @Test
  • assert 斷言方法
  • @BeforeEach、@AfterEach、@BeforeAll、@AfterAll
  • @Disabled、@DisplayName

如何測試Spring Boot 程式

  • Service 層 、Dao 層的測試
    • @SpringBootTest
    • @Transactiona
  • Controller 層的測試
    • MockMvc
    • 主架構:
      • RequestBuilder [創建 Http Request]
      • mockMvc.perform() [發起 Http Request]
      • andExpect() [驗證結果]

隔絕外部服務的依賴

  • Mock 測試 - Mockito
    • @MockBean、@SpyBean
    • 模擬方法的返回值: when…thenReturn、doReturn…when
    • 模擬噴出 Exception: when…thenThrow、doThrow…when
  • 使用 H2 資料庫
    • schema.sql [放創建table 的 sql]
    • data.sql [放插入數據的 sql]

經驗分享

  • 單元測試的數量不是越多越好
  • 記得要測 Error Case
  • IntelliJ 的 Run Test With Converage 功能

測試驅動開發

  • Test-Driven Development (TDD)
  • 先寫測試 , 再寫開發