내 작업은 원격 편안한 서비스을 사용해야하는 통합 테스트 구현을 구현하는 것입니다. 문제는 우리가 어떤 테스트 데이터도 원하지 않는다는 것입니다. 을 진정한 서비스에 넣으십시오. 편안하고에서 저장 및로드 데이터원격 안정 서비스로 통합 테스트
컨트롤러 책임 : 일반적으로
우리는이
@RequestMapping(value="/user/save", method = RequestMethod.POST)
saveUserData(@RequestParam String data, @RequestParam String user){
// here is the logic to send the data to save
restfulClient.save(user, data);
}
@RequestMapping(value="/user/load", method = RequestMethod.POST)
loadUserData(@RequestParam String data , @RequestParam String user){
// here is the logic to load the data from restful service
return restfulClient.load(user, data);
}
RestfulClient은 넣어 만들고 요청 원격 편안한 저장 서비스 및로드 사용자 데이터를 얻을.
2 오이 리오 :
When user User is saving data some_data
Then user User sees saved data is some_data
3 오이 테스트 : USER_ID 각 시험에 대해 상이 할 수 있도록
@When("^user (.+) is saving data (.+)$")
public void whenSave(String userName, String data) throws Exception {
MockHttpServletRequestBuilder req = post("/user/save").contentType(APPLICATION_JSON_UTF8).content(data);
callUrl = getMockMvc().perform(req.session(userName));
}
@Then("^user (.+) sees saved data is (.+)$")
public void thenResponseAndDataAreCorrect(String userName, String data) throws Exception {
MockHttpServletRequestBuilder req = get("/user/load").content(data);
callUrl = getMockMvc().perform(req.session(req.session(userName));
callUrl.andExpect(status().isOk());
callUrl.andExpect(jsonPath("$.Records[*].data", hasItems(userName)));
}
시험은 상이한 스레드를 동시에 실행할 수있다. 이 경우 각 ID에 대한 데이터를 쓰고 읽을 수있는 가능성이 필요합니다.
http://some.restful.service/{user_id}
위에서 설명한 경우에 사용할 수있는 몇 가지 방법을 알고 있으면 좋습니다.
당신이 묻는 것은 사소한 것입니다. 'dbunit' (dbunit.sourceforge.neta) 사용을 고려 했습니까? 테스트를 실행하기 전에 db를 사용하여 상태를 설정하고 테스트가 끝난 후 모든 테스트 생성 데이터를 제거 할 수 있습니다. – gkaran89
원격 RESTful 서비스가 귀하의 통제하에 있습니까? 실제 환경의 중독을 방지하기 위해 테스트 용으로 복사본을 만들 수 있습니까? 그렇지 않은 경우이 RESTful 서비스를 조롱하고 (자신의 단순화 된 버전을 작성하여)이를 대신하여 통합 테스트를 실행하는 것이 좋습니다. – Jamey
우리는 RESTful 클라이언트를 조롱하는 방법을 선택했다. – d3day