我创建了我的资源来处理一些图像,我想用JUnit的@ClassRule
测试它们,就像我之前做的那样。它们看起来像这样:
@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:应用程序初始化期间应用程序资源模型的验证失败。
[[致命]找不到类型为public的参数的注入源...
如何为此问题编写正确的类规则?
答案 0 :(得分: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