2014-04-04 6 views
4

내 작업은 원격 편안한 서비스을 사용해야하는 통합 테스트 구현을 구현하는 것입니다. 문제는 우리가 어떤 테스트 데이터도 원하지 않는다는 것입니다. 을 진정한 서비스에 넣으십시오. 편안하고에서 저장 및로드 데이터원격 안정 서비스로 통합 테스트

컨트롤러 책임 : 일반적으로

우리는이

@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} 

위에서 설명한 경우에 사용할 수있는 몇 가지 방법을 알고 있으면 좋습니다.

+0

당신이 묻는 것은 사소한 것입니다. 'dbunit' (dbunit.sourceforge.neta) 사용을 고려 했습니까? 테스트를 실행하기 전에 db를 사용하여 상태를 설정하고 테스트가 끝난 후 모든 테스트 생성 데이터를 제거 할 수 있습니다. – gkaran89

+1

원격 RESTful 서비스가 귀하의 통제하에 있습니까? 실제 환경의 중독을 방지하기 위해 테스트 용으로 복사본을 만들 수 있습니까? 그렇지 않은 경우이 RESTful 서비스를 조롱하고 (자신의 단순화 된 버전을 작성하여)이를 대신하여 통합 테스트를 실행하는 것이 좋습니다. – Jamey

+0

우리는 RESTful 클라이언트를 조롱하는 방법을 선택했다. – d3day

답변

관련 문제