【发布时间】:2020-07-05 20:32:31
【问题描述】:
待测方法:
public class myclass{
public void findFile(final String directoryName, final DataImportMonitoringCronjobModel job)
{
File file = new File(directoryName);
if (file.isDirectory())
{
final Date archiveDate = new Date(file.lastModified());
..}
}
如何从我的测试类中为文件对象创建模拟并满足 if 条件?
我尝试使用 PowerMockito,但无法满足 if 条件。
测试类
@Mock
private File file;
@Test
public void findFileTest() throws Exception
{
PowerMockito.whenNew(File.class).withAnyArguments().thenReturn(file);
PowerMockito.when(file.isDirectory()).thenReturn(true);
myclass.findFile();
}
【问题讨论】:
-
我不确定我是否理解。您从测试中返回的
file是什么?为什么不直接模拟isDirectory方法? -
我正在返回使用@Mock(已编辑)模拟过的文件 isDirectory 是 File.class 的一种方法。所以我们应该先实例化 tie 对象来使用方法 isDirectory
-
为什么不模拟 isDirectory?
-
我们该怎么做呢?我是编写测试用例的新手,这真的很有帮助。
-
我认为大多数 PowerMock/PowerMockito 教程都涵盖了这一点,因为这是它所做的事情之一。
标签: unit-testing junit powermockito