2017-12-13 2 views
0

현재 컨트롤러의 메소드를 테스트하고 있습니다. 메서드가 올바른 문자열을 반환하는지 테스트하기 만하면됩니다.AssertionError 유닛 테스트시 예기치 않은 메소드 호출

@RequestMapping(value = "/createTestscenario", method = RequestMethod.POST) 
public String createTestscenario(@PathVariable("tdid") Integer testdesignID, @ModelAttribute("testscenario") Testscenario testscenario){ 

    Testdesign testdesign = this.testdesignService.getTestdesignById(testdesignID); 
    testscenario.setTestdesign(testdesign); 
    testdesign.getTestscenarioSet().add(testscenario); 
    this.testdesignService.saveTestdesign(testdesign); 

    return "redirect:/projects"; 
} 

이 내가 테스트를 실행할 때 오류 얻을 내 단위 테스트

@Test 
public void createTestscenario1() throws Exception { 

    Testdesign testdesign = new Testdesign(); 
    testdesign.setId(1); 

    Testscenario testscenario = new Testscenario(); 
    testscenario.setId(1); 
    Testscenario testscenario2 = new Testscenario(); 
    testscenario.setId(2); 
    Set<Testscenario> set = new HashSet<>(Arrays.asList(testscenario)); 
    testdesign.setTestscenarioSet(set); 
    testscenario.setTestdesign(testdesign); 

    EasyMock.expect(testdesignService.getTestdesignById(1)).andReturn(testdesign); 
    EasyMock.replay(testdesignService); 

    String test = controller.createTestscenario(1, testscenario2); 

    EasyMock.verify(testdesignService); 

    Assert.assertEquals("redirect:/projects", test); 
} 

입니다 : 오류가 자리하고있는 곳

java.lang.AssertionError: 
    Unexpected method call TestdesignServiceImpl.saveTestdesign([email protected]): 

는 솔직히 모르겠어요. saveTestdesign 메소드를 모의 할 수 없습니다.

EasyMock.expect(testdesignService.save(testdesign)).andReturn(..); 

save는 void 메소드입니다.

누군가이 단위 테스트를 수정하는 방법을 알고 있습니까?

+0

등의 작업을 수행하는 방법은 void 메소드를 사용하는 경우에도 있습니다. 예 : https://stackoverflow.com/questions/22831523/easymock-void-method – Stultuske

답변

1

재생 전에 testdesignService.save(testdesign)으로 전화하면됩니다. 이것이 void 메소드의 예외를 설정하는 방법입니다.

또한

testdesignService.save(testdesign) 
expectLastCall(); 

을 할 수 그러나 expectLastCall() 실제로 필요하지 않습니다. expectLastCall().andThrow(new RuntimeException())

관련 문제