使用powermock java模拟创建数组

时间:2013-08-26 08:18:22

标签: java unit-testing powermock

我想在java.i中为以下函数编写一个测试,想要模拟数组的创建。

public File[] myFunc()
{  

 File[] array = new File[2];

 return array;

}

我使用powermock java编写了以下测试:

@Test

public void test1()
{

 File f1 = createMock(File.class);

 File[] files = new File[]{f1};

 expectNew(File[].class).andReturn(fArray);

 replayAll();

 File[] res = myclass.myFunc();

 verifyAll();

assertEquals(f1, res[0]);

}

它会抛出异常,并显示以下消息: org.powermock.reflect.exceptions.ConstructorNotFoundException: No constructor found in class java.io.file with parameter types:<none>

2 个答案:

答案 0 :(得分:0)

异常已经说明了:你试图创建一个File实例而不指定构造函数参数,但是没有没有java.io.File类参数的构造函数。异常的堆栈跟踪将告诉您尝试的代码位置。我猜,它是File f1 = createMock(File.class);。检查powermock文档以了解备选方案。

答案 1 :(得分:0)

因为没有值,所以模拟这个数组的创建是没有意义的。一个更简洁的测试是:

@Test
public void test1() {
    File[] result = myclass.myFunc();
    assertEquals(2, result.length);
    for (File f : result) {
        assertNull(f);
    }
}