2016-09-30 4 views
0

저는 Spring Boot를 처음 사용하고 Spring Boot에서 테스트를 수행하는 방법을 배우려고합니다. 응용 프로그램 통합 테스트에 도움이되는 @SpringBootTest 주석에 대해 읽었습니다. 스프링 테스트에서 단위 테스팅이 어떻게 이루어져야하는지 궁금합니다. 단위 테스트에서 @SpringBootTest 주석을 지정해야합니까, 아니면 통합 테스트에만 사용해야합니까? 단위 테스트에 사용될 특수한 주석이 있습니까?봄 부팅시 단위 테스트

모든 포인터가 많이 감사하겠습니다. 미리 감사드립니다!

편집 : SpringBootTest 주석은 통합 테스트에만 사용됩니까? 스프링 문서에서 다음 코드 예제를 발견했습니다.

@RunWith(SpringRunner.class) 
@SpringBootTest 
@AutoConfigureMockMvc 
public class HelloControllerTest { 

@Autowired 
private MockMvc mvc; 

@Test 
public void getHello() throws Exception { 
    mvc.perform(MockMvcRequestBuilders.get("/").accept(MediaType.APPLICATION_JSON)) 
      .andExpect(status().isOk()) 
      .andExpect(content().string(equalTo("Greetings from Spring Boot!"))); 
} 
} 

단위 또는 통합 테스트입니까? 내 생각 엔 MockMvc를 사용하기 때문에 통합 테스트가 아니라는 것이다. 그게 맞습니까? 그렇다면 @ FlringBootTest 주석을 본격적인 통합 테스트가 아닌 테스트에 사용할 수 있다는 의미입니까?

+0

단위 테스트를 수행하는 데 특별한 것이 필요하지 않습니다. 테스트 할 컴포넌트를 생성하기 위해'new'를 사용하십시오. –

+0

@JBNizet이 말했듯이 스프링 부트 애플리케이션에서 클래스를 테스트 할 때는 특별한 것이 필요하지 않습니다. Spring Boot를 사용하지 않았다면 할 일과 마찬가지로 테스트 클래스를 작성하고 실행하십시오. ** 그러나 당신이 알고 싶은 것은 엔드 포인트 **에 HTTP 호출을 테스트하는 방법입니다 (단위 테스트가 아닌 통합 테스트 일 것입니다). 귀하의 게시물에 그렇게 말하십시오. – walen

+0

응답 해 주셔서 감사합니다. Spring Boot는 매우 앞선 통합 테스트 기능을 제공합니다. Spring Boot는 슬라이스 테스트 기능을 제공하여 애플리케이션의 개별 구성 요소를 테스트 할 수 있다는 것을 알고 있습니다. 예를 들어. WebMvcTest 주석을 사용하여 컨트롤러 부분을 테스트 할 수 있습니다. 이것은 단위 테스트로 간주 될 수 있습니까? – Reshma

답변

0

엄밀히 말하면, "단위"테스트에서는 Spring을 사용해서는 안됩니다. JUnit/TestNG/Spock/일반적으로하는 것처럼 개별 클래스를 테스트하기 만하면됩니다. @SpringBootTest는 통합 테스트를위한 테스트입니다.

관련 문제