나는 dao 구현을위한 테스트 케이스가있다.
테스트 클래스 코드 -봄 부팅 Dao 테스트
@RunWith(SpringRunner.class)
@RestClientTest({XyzDaoImpl.class})
@TestPropertySource(locations = "classpath:application-test.properties")
public class XyzDaoTest {
@Autowired
XyzDaoImpl xyzDaoImpl;
@Test
public void testGetXyzDetails(){
assertThat(xyzDaoImpl.getXyzDetails("123", null)).isNotNull();
}
}
xyzDaoImpl.getXyzDetails 메소드 구현은 RestTemplate을 사용하여 백엔드를 호출합니다. 내 설정 클래스 코드가 포함되어있는 경우
이 시험은 잘 작동 -
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
을하지만 난 시간 제한 등의 설정 빌더를 사용하여 나머지 템플릿을 작성하는 경우, 테스트가 실패 -
@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
return restTemplateBuilder
.setConnectTimeout(timeout)
.build();
}
는 콩이 @profile를 사용하여 만드는 시도 ("test") default 및 @Profile ("! test") - 사용자 정의 설정, 여전히 테스트가 실패합니다.
오류입니다 - @RestClientTest
으로 실행하는 경우
testException = java.lang.AssertionError: No further requests expected: HTTP POST http://... url.
가 @RestClientTest이 처리했다십시오. 감사합니다 – chappalprasad
위의 @RunClientTest를 단위 테스트 용으로 유지하면 applicationContext 오류를로드 할 수 없습니다.
내가 변경 한 설정은 아래에 추가했습니다.
server = MockRestServiceServer.createServer (new RestTemplate());
또한 XYZDaoImpl에서 Autoried 인 클래스를 포함하여 시도했습니다. EnabledWebMvc를 추가 한 후에는 아무 것도 얻지 못합니다 java.servlet.ServletContext – chappalprasad
@ ServAppContext는 @WebAppConfiguration에 의해 제공됩니다. 구성 요소 검색 경로에 @EnableWebMvc가있는 구성 요소가 있기 때문에 찾으려고합니다. @EnableWebMvc를 사용하여 구성 요소를 제외하거나 @WebAppConfiguration이있는 구성 요소를 추가 할 수 있습니다. – sabertiger