Test 코드의 중요성

  1. 한가지 기능을 가진 클래스를 구현할 수 밖에 없기 때문에 코드를 깔끔하게 작성할 수 있다.
  2. 리팩토링에 대한 신뢰성을 보장 받을 수 있다.
  3. 동료 개발자에게 가이드가 된다.
  4. 실제 기능 테스트와 디버깅을 손쉬운 방법으로 진행할 수 있다.

@RunWith(SpringRunner.class)

ApplicationContext를 만들고 관리하는 작업을 @RunWith(SpringRunner.class)에 설정된 class를 이용하겠다라는 의미

@SpringBootTest

스프링 부트 기능으로 테스트를 시작하라는 것을 JUnit에게 알려준다. main() 메서드의 SpringApplication.run() 호출에 부합되는 테스트 클래스를 나타낸다. @SpringBootTest 가 테스트의 스프링 애플리케이션 컨텍스트를 로드하는 작업을 수행하더라고 메서드가 없다면 아무 일도 하지 않는다. 그래서 아래와 같이 contextLoads() 메서드가 정의되어 있는 것처럼 실행 코드는 없더라도 테스트 메서드가 있는 경우에는@SpringBootTest 애노테이션이 작업을 수행하게 되어 스프링 애플리케이션 컨텍스트가 로드 된다.

@SpringBootTest
class StudyApplicationTests {

    @Test
    void contextLoads() {
    }

}