1

所以我在我的一个控制器中有一个方法,它需要一个 CSV 文件,然后它会处理。这一切似乎都很好,但我想添加一些测试来验证它。但是,我不能 100% 确定如何进行测试。

我写了一个应该可以工作的快速测试方法(据我所见),但我收到以下错误:

A java.lang.RuntimeException has been caught, java.io.FileNotFoundException: File is not a normal file.

我的代码如下:

控制器方法:

/* client-side scripts dictate the incoming
 * file will be called "files".
 */
public static void upload(File files) {
    //do some work
}

控制器测试方法:

/* this test class and the file "valid-data.csv"
 * are in the same folder.
 */
@Test
public void upload() {
    File csvFile = Fixtures.loadYaml("valid-data.csv", File.class);
    Map<String, File> fileMap = new HashMap<String, File>();
    fileMap.put("files", csvFile);

    Response response = POST("/api/upload", new HashMap<String, String>(), fileMap);
    assertIsOk(response);
}

我会以正确的方式解决这个问题吗?我正在使用 Play Framework 1.2.5

4

1 回答 1

0

终于解决了这个问题。原来这是一个简单的文件位置问题。正如我所提到的,测试类和 csv 文件位于同一个文件夹中,称为“test”。但是,在加载文件时,我仍然需要在“测试”文件夹中指定它。

只需将测试函数的第一行从:

File csvFile = Fixtures.loadYaml("valid-data.csv", File.class);

至:

File csvFile = new File("test/valid-data.csv");

现在它工作正常。

于 2013-06-12T11:45:25.940 回答