SpringBoot:SpringBootプロジェクトによるユニットテスト


SpringBoot:SpringBootプロジェクトによるユニットテスト


JUnitは、アプリケーションに対するユニットテストを実施するために開発者によって使用され、プログラムの作成速度を速め、符号化の品質を向上させる回帰テストフレームワークです.
JUnitでよく使用される注記は、@BeforeClass:すべてのテストに対して1回のみ実行され、static voidでなければなりません.@Before:メソッドを初期化し、現在のテストクラスの各テストメソッドを実行する前に実行します.@Test:テスト方法、ここで期待異常とタイムアウト時間をテストできます.@Test(timeout=1000)テストメソッドは1000ミリ秒を超えるとタイムアウトし、テストは失敗します.@Test(expected=Exception.class)テストメソッドで期待される例外クラスは、メソッド実行に指定された例外が投げ出されていない場合、テストに失敗します.@After:リソースを解放し、現在のテストクラスの各テストメソッドを実行した後に実行します.@AfterClass:すべてのテストに対して1回のみ実行し、static voidである必要があります.@Ignore:無視されたテストメソッド(クラスのテスト時にのみ有効で、このテストメソッドを単独で実行するのは無効です).@RunWith:テストランナ、デフォルトorgを変更できます.junit.runner.Runner
ユニットテストクラスの実行順序は、@BeforeClass->@Before->@Test->@After->@AfterClassの各テストメソッドの呼び出し順序:@Before->@Test->@After
Spring Bootはユニットテストを行い、主にwebモジュールに依存しないユニットテスト(Service)とwebモジュールに依存するユニットテスト(Controller)の2種類に分けられる.テスト手順は次のとおりです.
1.pomにJarパッケージ依存を追加する

   org.springframework.boot
   spring-boot-starter-test
   test


2、Webモジュールに依存しないユニットテスト(Service)
import com.example.bean.Student; 

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import static org.junit.Assert.*;

@RunWith(SpringRunner.class)
@SpringBootTest(classes=Application.class)
public class StudentServiceTest {
    @Autowired
    private StudentService studentService;

    @Test
    public void findOne() throws Exception {
    	// Id 1 20
        Student student = studentService.findOne(1);
        Assert.assertEquals(new Integer(20), student.getAge());
    }
}

3、Webモジュールに依存するユニットテスト(Controller)getはTestcontrollerへのアクセスを要求し、パス+「/hello」はhello文字列を返す.インタフェースが正常であることを確認し、期待される結果を返します.
@RunWith(SpringRunner.class)
@SpringBootTest(classes=Application.class)
public class SpringbootDemoApplicationTests {   
   @Autowired
   private WebApplicationContext webApplicationContext;

   private MockMvc mockMvc;   
   
   @Test
   public  void hello() throws Exception {
      String url = "/hello";// url
      String expectedResult = "hello";// 
      
	 mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();

      MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get(url).accept(MediaType.APPLICATION_JSON)).andReturn();      
      
      // 
      int status = mvcResult.getResponse().getStatus();
      System.out.println(status);
      
      // 
      String content = mvcResult.getResponse().getContentAsString();
      System.out.println(content);
      // 

      // 
      Assert.assertTrue(" ", status == 200);
      Assert.assertFalse(" ", status != 200);
      
      // 
      Assert.assertTrue(" ", expectedResult.equals(content));
      Assert.assertFalse(" ", !expectedResult.equals(content));
   }
}

説明:A.@SpringBootTest注記は、一般的なSpringプロジェクト(非Spring Bootプロジェクト)で統合テストコードを記述するために使用される@ContextConfiguration注記の代替品です.Springアプリケーションのロード方法を決定するコンテキストリソースとして機能します.Spring Bootアプリケーションテストを実行すると、@SpringBootTestコメントは、@SpringBootApplicationまたは@SpringBootConfigurationコメントクラスが見つかるまで、現在のテストクラスが存在するパッケージから自動的に上へ検索されます.Springアプリケーションのコンテキストリソースをロードする方法を決定します.B.Spring環境に基づくJunit集積テストはまた@RunWith(SpringJUnit 4 ClassRunner.class)注釈を必要とし、この注釈はJunitを変更してSpringのテスト環境で実行させ、Springテスト環境のコンテキストサポートを得ることができる.そうでなければ、JunitテストではBeanの自動アセンブリなどの注記は機能しません.ただし、SpringJUnit 4 ClassRunnerは記憶しにくいため、Spring 4.3からSpringJUnit 4 ClassRunnerと同等のクラスSpringRunnerが提供されているため、@RunWith(SpringRunner.class)と略記することができる.