@WebMvcTest
(즉 @WebMvcTest(FirstAction.class)
및 @WebMvcTest(SecondAction.class)
)와 두 개의 서로 다른 클래스를 사용하여 당신은 특히 서로 다른 애플리케이션 컨텍스트를 원하는 표시된다. 이 경우 각 컨텍스트마다 다른 bean 세트가 들어 있기 때문에 단일 컨텍스트를 공유 할 수 없습니다. 만약 당신이 컨트롤러 빈 (bean)이라면, 컨텍스트가 상대적으로 빠르게 생성되어야하고, 실제로 문제가 없어야합니다.
모든 웹 테스트에서 캐시되고 공유 할 수있는 컨텍스트를 갖고 싶다면 정확하게 동일한 bean 정의가 포함되어 있는지 확인해야합니다. 마음에 드는 두 가지 옵션 :
1) 컨트롤러를 지정하지 않고 @WebMvcTest
을 사용하십시오.
FirstActionTest :
@RunWith(SpringRunner.class)
@WebMvcTest
@TestPropertySource("classpath:test-application.properties")
public class FirstActionTest {
@Autowired
private MockMvc mvc;
// ...
}
SecondActionTest :
@RunWith(SpringRunner.class)
@WebMvcTest
@TestPropertySource("classpath:test-application.properties")
public class SecondActionTest {
@Autowired
private MockMvc mvc;
// ...
}
2) 모든 @WebMvcTest
를 사용하지 마십시오 그래서 당신은 모든 콩 (뿐만 아니라 웹 문제를 포함하는 애플리케이션 컨텍스트를 얻을 수)
처음 ActionTest :
@RunWith(SpringRunner.class)
@SpringBootTest
@TestPropertySource("classpath:test-application.properties")
public class FirstActionTest {
@Autowired
private MockMvc mvc; // use MockMvcBuilders.webAppContextSetup to create mvc
// ...
}
SecondActionTest : 당신이 반복적으로 개발 한 번에 하나의 테스트를 실행하는 경우 캐시 된 상황이 빠르게 여러 테스트를 실행 할 수 있다는 것을 명심하지만
@RunWith(SpringRunner.class)
@SpringBootTest
@TestPropertySource("classpath:test-application.properties")
public class SecondActionTest {
@Autowired
private MockMvc mvc; // use MockMvcBuilders.webAppContextSetup to create mvc
// ...
}
, 당신 콩을 많이 만드는 비용을 지불하고 즉각 버려집니다.
예 가능합니다. http://stackoverflow.com/a/8502023/410677 – kuhajeyan
@kuhajeyan 링크는 xml 기반 구성을위한 것이며, spring2.5에서도 매우 쉽게 할 수 있습니다. 하지만 스프링 부트에서는 일반적으로 컨텍스트에 대한 구성 파일이 없으며 스프링 부트에이를 적용하는 방법이 확실하지 않습니다. –
@ EricWang도 같은 것을 찾고 있습니까? 당신이 그것에 대한 답을 찾을 수 있었습니까? – Ahmed