我有一个像下面这样的课程;
class ClassA {
private static File myDir;
// myDir is created at some stage
private static String findFile(final String fileName) {
for (final String actualBackupFileName : myDir.list()) {
if (actualBackupFileName.startsWith(removeExtensionFrom(backupFile))) {
return actualBackupFileName;
}
}
}
}
因此,基本上,我想通过模拟 File 类来测试此类,以便在调用 list() 时它返回我在测试类中定义的字符串列表。
我有以下内容,但目前不起作用,可能有一些明显的我做错了 - 我是 JMockit 的新手 - 非常感谢任何帮助!
@Mocked("list") File myDir;
@Test
public void testClassA() {
final String[] files = {"file1-bla.txt"};
new NonStrictExpectations() {{
new File(anyString).list();
returns(files);
}};
String returnedFileName = Deencapsulation.invoke(ClassA.class, "findFile","file1.txt");
// assert returnedFileName is equal to "file1-bla.txt"
}
运行上述测试时,我在 ClassA 中的 myDir 字段中收到 NullPointerException - 所以看起来它没有被正确模拟?
您可以使用 Deencapsulation 类中的 setField 方法。请注意下面的示例:
Deencapsulation.setField(ClassA, "File", your_desired_value);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)