Spring:テストコード

6919 ワード

  • 最近の開発では,ユニットテストが必要条件である.そこで,テストコードについて議論する.
  • テストコードの概要

  • TDDとユニットテストが異なります.
  • TDDはテスト主導の開発である.
  • のテストコードの作成から開始します.
  • まず、常に失敗するテストを作成します:Red
  • 作成
  • テストに合格した生産コード:グリーン
  • のテストに合格した場合は、本番コードを再パッケージします.Refactor
  • ユニットテストのメリット

  • の開発初期に問題の発見を支援した.
  • 開発者は、後でライブラリを再パッケージまたはアップグレードするときに、既存の機能が正常に動作しているかどうかを確認できます.
  • ユニットテストは、システムに関する実際のドキュメントを提供します.
  • システムの実際のドキュメントを提供します.単位テスト自体は作文ファイルを使うことができます.
  • の既存バージョンとsout印刷出力から、バージョン時間の無駄な時間を節約できます.
  • HelloController Test Code

  • Controller
  • 
    @RestController
    public class HelloController {
    
      @GetMapping("/hello")
        public String hello() {
          return "hello";
        }
    
    }
    @RestController
  • コントローラをJSONに戻すコントローラを作成します.
  • 一次処理
  • @ResponseBody.
  • @GetMappping
  • Getリクエスト
  • を受信
    @RunWith(SpringRunner.class)
    @WebMvcTest(controllers = HelloController.class, 
    	excludeFilters = {
    		@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = SecurityConfig.class)
            }
    )
    public class HelloControllerTest {
      @Autowired
      private MockMvc mvc;
        ...
        
      @WithMockUser(roles="USER")
      @Test
      public void hello가_리턴된다() throws Exception {
        String hello = "hello";
    
        mvc.perform(get("/hello"))
                .andExpect(status().isOk())
                .andExpect(content().string(hello));
      }
  • @RunWith(SpringRunner.class)
    -スプリングガイドテストとjunit間のコネクタロール
  • @WebMvcTest
  • 複数のスプリングテストソフトウェアのうち、Webに集中することができる.
  • 宣言
  • の場合は、@Controller,@Controller Addvice
  • を使用します.
  • @Service,@Component,@Repositoryは使用できません
  • ここではコントローラのみを使用するため、
  • を使用する.
  • @AutoWired
  • スプリングによって管理されるbean注入を受ける.
  • private MockMvc mvc
  • Web APIのテストでは
  • を使用します.
  • スプリングMVC試験起点
  • このクラスによりHTTP GET、POST等に対してAPIテスト
  • を行うことができる.
  • mvc.perform(get("/hello"))
  • MockMvcにより/helloアドレスにHTTP GET要求
  • を発行する.
  • のふるい分けをサポートし、以下の多種の検証機能によって連続的に宣言することができる.
  • .andExpect(status().isOk())
  • mvc.プレゼンテーション結果
  • Http Headerのステータス検証:200、400、500...
  • Ok,200認知検証
  • .andExpect(content().string(hello))
  • mvc.プレゼンテーション結果
  • 応答テキスト検証
  • コントローラの値が「hello」
  • に等しいかどうかを確認します.

    ブラウザ結果の確認


  • のテストコードを必ず作成してください.
    ハブ実習コード