0

我目前在使用 EasyMock 进行单元测试时遇到问题。

Expectation failure on verify:
     FileConverter.convert(file, file2): expected: 1, actual: 1

这是该类中唯一的失败,它在下面的验证方法中失败。我曾尝试用谷歌搜索该消息,但这只会显示“预期:1,实际:1 (+1) ”的结果,+1表示错误不同。

我试图简化失败的 EasyMock 测试的结构以进行演示。请原谅任何错别字:

@Test
public void testScan() {
  String[] testFiles = { "file", "file2" };
  FileConverter converterMock = EasyMock.createMock(FileConverter.class);
  Poller poller = new Poller(new File("testFolder"), converterMock);

  for (String testFile : testFiles) {
    converterMock.convert(new File(testFile));
    EasyMock.expectLastCall().once();
  }
  EasyMock.replay(converterMock);

  for (String testFile : testFiles) {
    poller.scan();
  }
  EasyMock.verify(converterMock);
}

我不认为代码本身特别相关,但为了完整性我将其包括在内 - 我真正要寻找的是对 EasyMock.verify 方法上下文中“预期 1,实际 1”可能意味着什么的解释。

提前致谢!

4

3 回答 3

5

另一种可选情况是在使用多线程环境时,可能会在测试结束后对模拟对象调用所需的方法。

于 2014-05-12T20:51:11.727 回答
1

这些测试运行中的错误消息可能非常不清楚。我确实看到它在期望带有 2 个参数的convert方法调用签名时失败了。File因此,请尝试通过在测试中完成/替换以下行来期待这一点:

converterMock.convert(new File(testFile));

有类似的东西:

File file1 = new File(testFile1);
File file2 = new File(testFile2);
converterMock.convert(testFile1, testFile2);

还可以尝试不太具体的匹配,例如:

converterMock.convert(EasyMock.isA(File.class), EasyMock.isA(File.class));

或者

File file1 = new File(testFile1);
File file2 = new File(testFile2);
converterMock.convert(EasyMock.eq(file1), EasyMock.eq(file2));
于 2016-08-26T06:28:46.497 回答
0

您使用的是最新版本的 EasyMock 吗?因为我确实记得旧版本有时会执行奇怪的计算。

我试过你的代码,如果我猜对了扫描方法的内容。

void scan(String file) {
    converter.convert(new File(file));
}

它应该可以完美运行。

于 2013-07-12T19:47:05.520 回答