目前,我在使用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”可能意味着什么。
提前感谢!
发布于 2014-05-12 20:51:11
另一种可选的情况是,当使用多线程环境时,可能会在测试结束后在模拟对象上调用所需的方法。
发布于 2016-08-26 06:28:46
从这些测试运行中,错误消息可能非常不清楚。我确实看到它在使用带有两个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));发布于 2013-07-12 19:47:05
您使用的是最新版本的EasyMock吗?因为我确实记得老版本有时执行奇怪的计算。
我尝试了您的代码,如果我猜对了,扫描方法的内容。
void scan(String file) {
converter.convert(new File(file));
}它应该能完美地工作。
https://stackoverflow.com/questions/17594152
复制相似问题