我有以下课程(及其中的方法)
班级提升者{
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
我查看过很多文章,但我无法弄清楚这里缺少什么以及为什么文件没有被嘲笑。请帮助提出任何建议
答案 0 :(得分:0)
当您模拟Java System类(并且File
是Java系统类)时,您必须向@PrepareForTest
添加ClassThatCallsTheSystemClass。
因此,您需要将class Fetcher
添加到@PrepareForTest
@RunWith(PowerMockRunner.class)
@PrepareForTest({Fetcher.class})