Playframework 在Play Framework功能测试中将文件上载到url

Playframework 在Play Framework功能测试中将文件上载到url,playframework,playframework-1.x,Playframework,Playframework 1.x,因此,我的一个控制器中有一个方法,该方法需要一个CSV文件,然后它将处理该文件。这一切似乎都很好,但我想添加一些测试来验证它。然而,我不是100%确定如何进行测试 我写了一个快速测试方法,应该可以工作(据我所知),但我得到以下错误: A java.lang.RuntimeException has been caught, java.io.FileNotFoundException: File is not a normal file. 我的代码如下: 控制器方法: /* client-sid

因此,我的一个控制器中有一个方法,该方法需要一个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);
}
/*此测试类和文件“valid data.csv”
*在同一个文件夹中。
*/
@试验
公开作废上载(){
文件csvFile=Fixtures.loadYaml(“valid data.csv”,File.class);
Map fileMap=newhashmap();
put(“文件”,csvFile);
Response-Response=POST(“/api/upload”,newhashmap(),fileMap);
SOK(响应);
}
我这样做对吗?我使用Play Framework 1.2.5最终解决了这个问题。 原来这是一个简单的文件位置问题。正如我提到的,测试类和csv文件位于同一个文件夹中,称为“test”。但是,在加载文件时,我仍然需要指定它位于“test”文件夹中

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

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

现在一切正常

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