4

我有一个安静的网络服务,可以上传文件。不过,我还没有为它构建的 UI。我想编写一个将调用服务并上传文件的junit测试。我该怎么做?我看不到手动创建表单以传递给服务的方法。

这是我的休息服务:

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
    @FormDataParam("file") InputStream uploadedInputStream,
    @FormDataParam("file") FormDataContentDisposition fileDetail) {

    String uploadedFileLocation = "c://uploadedFiles/" + fileDetail.getFileName();

    // save it
   // saveToFile(uploadedInputStream, uploadedFileLocation);

    String output = "File uploaded via Jersey based RESTFul Webservice to: " + uploadedFileLocation;

    return Response.status(200).entity(output).build();
}
4

2 回答 2

5

我已经实现了以下代码,并且工作正常。如果您有任何问题,请告诉我:

FormDataMultiPart form = new FormDataMultiPart();
URI uri = new File("filepath").toURI();
InputStream data =  this.getClass().getResourceAsStream("filePath");    
FormDataBodyPart fdp1 = new FormDataBodyPart("key1", uri.toString());
FormDataBodyPart fdp2 = new FormDataBodyPart("key2",data, MediaType.APPLICATION_OCTET_STREAM_TYPE);

form.bodyPart(fdp1).bodyPart(fdp2); 
response = builder.post(ClientResponse.class, form);

Assert.assertEquals(response.getStatus(), Status.OK.getStatusCode());
于 2014-01-30T05:43:58.330 回答
0

您可以将Jersey 测试框架与 JUnit 一起使用。

于 2013-10-29T17:42:39.990 回答