当前位置: 首页 > 知识库问答 >
问题:

AssertionError在单元测试时调用意外的方法

仲柏
2023-03-14
@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):
EasyMock.expect(testdesignService.save(testdesign)).andReturn(..);

因为save是一个void方法

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

共有1个答案

夹谷岳
2023-03-14

在重播之前只需调用TestDesignService.Save(testdesign)。这就是如何设置void方法的异常。

你也可以做

testdesignService.save(testdesign)
expectLastCall();

但是expectlastcall()实际上是不必要的。它的存在只是为了执行ExpectLastCall().andThrow(new RuntimeException())等操作

 类似资料:
  • 我正在为一个具有HTTP get、put和post方法模块的应用程序编写django unittests。我一直在引用rest_framework的APITestCase方法来为POST方法编写unittest。 ========================================================================= Traceback(最近调用最后):文

  • 使用JUnit4.12和AndroidStudio,我试图测试下面的方法,结果似乎是匹配的。我不知道为什么我得到了 测试方法: 我的测试类: 控制台输出: 我不知道它为什么会失败。谁能为我指明正确的方向?

  • 我正在尝试从我的服务层对crud方法进行单元测试,我已经写了正确的代码(我认为),但是AssertTrue给了我与我预期相反的结果。(java.lang.AssertionError:) 我的测试代码如下: 学生服务测试 学生服务 学生服务 学生资源库 调试后,可以看到该学生正在被成功创建,并被添加到列表中。但正如可以看到的那样Student@10172,在学生列表中,将其保存在Student@1

  • 问题内容: 假设我在Python单元测试中具有以下代码: 有没有一种简单的方法可以断言在测试的第二行期间调用了特定方法(在我的情况下)?例如是否有这样的事情: 问题答案: 我为此使用Mock(在py3.3 +上现在是unittest.mock): 对于您的情况,它可能看起来像这样: Mock支持许多有用的功能,包括修补对象或模块的方式以及检查是否调用了正确的东西等。 买者自负! (请当心!) 如果

  • 我不熟悉单元测试。参考google之后,我创建了一个测试类来测试我的控制器,如下所示: 我有以下控制器和服务类: 当我调试单元测试时,控制器中的p对象为null。我的状态是200,但不是预期的JSON响应 我错过了什么?

  • 我试图在spring boot 2.3项目中使用JUnit5与Hibernate5.4和MockMvc。 这就是我的实体类的成员的外观: 我试图使用JUnit5用Mockito和MockMvc测试LocalDate字段birthDate。这就是测试用例的样子: 运行测试用例时,我得到一个AssertionError: 正如您所看到的,这两个字符串表示形式是相同的。但是JUnit5会抛出错误。 那么