我目前在使用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的上下文中可能意味着什么方法
提前致谢!
答案 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));
}
它应该完美无缺。