0

我想在 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>

4

2 回答 2

0

It makes no sense to me to mock the creation of this array since there are no values in it. A much more concise test would be this:

@Test
public void test1() {
    File[] result = myclass.myFunc();
    assertEquals(2, result.length);
    for (File f : result) {
        assertNull(f);
    }
}
于 2013-08-26T15:10:49.327 回答
0

异常已经说明了这一点:您尝试在没有指定构造函数参数的情况下创建一个 File 实例,但是对于 java.io.File 类没有没有参数的构造函数。异常的堆栈跟踪将告诉您尝试的代码位置。我猜,它的File f1 = createMock(File.class);. 检查 powermock 文档以获取替代方案。

于 2013-08-26T12:08:50.113 回答