EasyMock'预期1,实际1'

时间:2013-07-11 13:03:52

标签: java testing junit easymock

我目前在使用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);
}

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

提前致谢!

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分: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));

答案 2 :(得分:0)

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

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

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

它应该完美无缺。