【问题标题】:AssertionError Unexpected method call when unit testingAssertionError 单元测试时意外的方法调用
【发布时间】:2017-12-13 11:17:52
【问题描述】:

我目前正在对我的控制器的一种方法进行单元测试。只是尝试测试该方法是否返回正确的字符串。

@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(com.example.testclusters.model.Testdesign@28feb3fa):

老实说,我不知道错误在哪里。我不能像这样模拟 saveTestdesign 方法:

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

因为 save 是一个 void 方法。

有人知道如何修复这个单元测试吗?

【问题讨论】:

标签: java unit-testing easymock


【解决方案1】:

只需在重播前致电testdesignService.save(testdesign)。这就是设置 void 方法异常的方式。

你也可以这样做

testdesignService.save(testdesign)
expectLastCall();

expectLastCall() 实际上是不必要的。它的存在只是为了做expectLastCall().andThrow(new RuntimeException())之类的事情

【讨论】:

    猜你喜欢
    • 2014-03-12
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    相关资源
    最近更新 更多