2016-05-16 72 views
1

我创建了自己的资源来处理一些图像,并且我想用JUnit的@ClassRule进行测试,就像我以前一样。他们看起来是这样的:如何使用Multipart功能进行资源测试

@Path("/myImage") 
@POST 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
public Response postImage(
     @FormDataParam("file") InputStream inputStream) { 
//doStuff 
} 

现在,我想测试它,我有一个问题。我打这个阶级统治会确定

@ClassRule 
public static final ResourceTestRule resources = ResourceTestRule.builder() 
       .addResource(new MyResource()) 
       .addResource(new MultiPartBundle()) 
       .build(); 

但我仍然得到一个错误

org.glassfish.jersey.server.model.ModelValidationException:应用程序资源模型的验证应用中已失败初始化。

[FATAL]找不到类型公共的参数注入源...

如何撰写关于这个问题的妥善阶级统治?

回答

3

错误是因为您尚未将MutliPartFeature注册到服务器。 MultiPartBundle(它注册了MultiPartFeature)不是ResourceTestRule支持的东西。所以你只需要自己注册

public static final ResourceTestRule resources = ResourceTestRule.builder() 
       .addResource(new MyResource()) 
       .addProvider(MultiPartFeature.class) 
       .build(); 

与客户端一样。您还需要注册的功能,如果你想使用多序列化在客户端

resource.client().register(MultiPartFeature.class).. 

你可以看到一个完整的例子here