【发布时间】:2016-03-30 21:51:50
【问题描述】:
我有以下类(和其中的方法)
类提取器{
public void fetch(String key){
File file = File.createTempFile(key,"*.txt");
.....
....
}
}
我想对该方法进行单元测试并想模拟 createTempFile 方法 为此,我编写了单元测试如下
@RunWith(PowerMockRunner.class)
@PrepareForTest({File.class})
public class FetcherTest {
public void test() {
String key = "key";
File file = new File("Hello");
PowerMock.mockStatic(File.class);
EasyMock.expect(File.createTempFile(EasyMock.anyObject(String.class),EasyMock.anyObject(String.class))).andReturn(file).once();
PowerMock.replay(File.class);
Fetcher fetcher = new Fetcher();
fetcher.fetch("key");
PowerMock.verify(File.class);
}
}
执行单元测试提供以下错误:
验证时预期失败:File.createTempFile(,): 预期:1,实际:0
我浏览了很多文章,但无法弄清楚这里缺少什么以及为什么 File 没有被嘲笑。有什么建议请帮忙
【问题讨论】:
-
有“PowerMock.expect()”方法吗?如果是这样,您应该改用它。
-
PowerMock 没有任何期望,但据我所知,我们使用的是 EasyMock.expect
-
有趣。我只使用 PowerMockito,所以我不熟悉这种变化。我知道我们必须使用“PowerMock.when()”来模拟静态方法的行为。
-
我想知道这是否可能是由于 junit 和 PowerMockEasyMock 版本中的任何冲突
-
Easymock.replayAll();在哪里
标签: java unit-testing powermock easymock