我创建了资源来处理一些图像,我想像以前一样用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.grassfish.jersey.server.model.ModelValidationException:应用程序初始化期间,应用程序资源模型的验证失败。
[[FATAL]找不到public类型参数的注入源。。。
如何为这个问题编写一个合适的类规则?
错误是因为您没有向服务器注册MutliPartFeature
。MultiPartBundle
(注册MultiPartFeature
)不是ResourceTestRule
所支持的。所以你只需要自己注册
public static final ResourceTestRule resources = ResourceTestRule.builder()
.addResource(new MyResource())
.addProvider(MultiPartFeature.class)
.build();
与客户相同。如果您想在客户端上使用多部分序列化程序,您还需要注册该功能
resource.client().register(MultiPartFeature.class)..
您可以在这里看到完整的示例