Java PowerMock类是否为方法获取对象提供了新的方法模拟?

Java PowerMock类是否为方法获取对象提供了新的方法模拟?,java,unit-testing,mocking,mockito,powermock,Java,Unit Testing,Mocking,Mockito,Powermock,根据此链接: 如果我有这门课 public class PersistenceManager { public boolean createDirectoryStructure(String directoryPath) { File directory = new File(directoryPath); if (directory.exists()) { th

根据此链接:

如果我有这门课

public class PersistenceManager {

        public boolean createDirectoryStructure(String directoryPath) {
                File directory = new File(directoryPath);

                if (directory.exists()) {
                        throw new IllegalArgumentException("\"" + directoryPath + "\" already exists.");
                }

                return directory.mkdirs();
        }
}
我可以进行以下测试:

@RunWith(PowerMockRunner.class)
@PrepareForTest( PersistenceManager.class )
public class PersistenceManagerTest {

        @Test
        public void testCreateDirectoryStructure_ok() throws Exception {
                final String path = "directoryPath";
                File fileMock = createMock(File.class);

                PersistenceManager tested = new PersistenceManager();

                expectNew(File.class, path).andReturn(fileMock);

                expect(fileMock.exists()).andReturn(false);
                expect(fileMock.mkdirs()).andReturn(true);

                replay(fileMock, File.class);

                assertTrue(tested.createDirectoryStructure(path));

                verify(fileMock, File.class);
        }
}
我有以下问题:

如何测试该类:

public class PersistenceManager {

            public boolean createDirectoryStructure(String directoryPath) {
                    File directory = getFile(directoryPath);

                    if (directory.exists()) {
                            throw new IllegalArgumentException("\"" + directoryPath + "\" already exists.");
                    }

                    return directory.mkdirs();
            }
            public File getFile(String directoryPath){
                return new File(directoryPath);
            }

    }

对于
Mockito
/
PowerMockito
我使用powerMock版本1.5

您可以使用
whenNew()
函数。一旦你把它展开一点,它可能看起来像这样:

PowerMockito.whenNew(File.class).带参数(directoryPath).然后返回((File)fileMock)

另外,在使用
Mockito
时,请尝试使用
Mockito.mock()
创建模拟对象(在本例中为
fileMock