如何使用Java在Play Framework 2.0中测试文件上传的多部分表单数据请求?

如何使用Java在Play Framework 2.0中测试文件上传的多部分表单数据请求?,java,playframework,playframework-2.0,functional-testing,Java,Playframework,Playframework 2.0,Functional Testing,我知道您可以使用Scala API来完成这项工作,如下所示: 但是使用Java似乎没有办法做到这一点,因为FakerRequests的withFormUrlEncodedBody方法只支持字符串值 这是API中缺少的功能还是有解决方法?(仅使用Java)。对于集成测试,您可以像我一样使用apache DefaultHttpCLient: @Test public void addFileItem() throws Exception { File testFile = File.cre

我知道您可以使用Scala API来完成这项工作,如下所示:

但是使用Java似乎没有办法做到这一点,因为FakerRequests的withFormUrlEncodedBody方法只支持字符串值


这是API中缺少的功能还是有解决方法?(仅使用Java)。

对于集成测试,您可以像我一样使用apache DefaultHttpCLient:

@Test
public void addFileItem() throws Exception {
    File testFile = File.createTempFile("test","xml");
    DefaultHttpClient httpclient = new DefaultHttpClient();
    HttpPost method = new HttpPost(URL_HOST + "/api/v1/items/file");
    MultipartEntity entity = new MultipartEntity();
    entity.addPart("description", new StringBody("This is my file",Charset.forName("UTF-8")));
    entity.addPart(Constants.ITEMTYPE_KEY, new StringBody("FILE", Charset.forName("UTF-8")));
    FileBody fileBody = new FileBody(testFile);
    entity.addPart("file", fileBody);
    method.setEntity(entity);

    HttpResponse response = httpclient.execute(method);             
    assertThat(response.getStatusLine().getStatusCode()).isEqualTo(CREATED);
}
这要求您在测试中启动服务器:

public static FakeApplication app;
public static TestServer testServer;

@BeforeClass
public static void startApp() throws IOException {
    app = Helpers.fakeApplication();
    testServer = Helpers.testServer(PORT, app);
    Helpers.start(testServer);

}

@AfterClass
public static void stopApp() {
    Helpers.stop(testServer);
}

还想找一个如何做到这一点的例子。