我创建了我的资源来处理一些图像,我想像以前一样用 JUnit 的 @ClassRule
测试它们。它们看起来像这样:
@Path("/myImage")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response postImage(
@FormDataParam("file") InputStream inputStream) {
//doStuff
}
现在,我想测试它,但遇到了问题。我争取这个类(class)规则没问题
@ClassRule
public static final ResourceTestRule resources = ResourceTestRule.builder()
.addResource(new MyResource())
.addResource(new MultiPartBundle())
.build();
但是还是报错
org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] No injection source found for a parameter of type public ...
如何针对这个问题编写合适的类规则?
最佳答案
错误是因为您没有向服务器注册MutliPartFeature
。 MultiPartBundle
(它注册了 MultiPartFeature
)不受 ResourceTestRule
支持。所以你只需要自己注册就可以了
public static final ResourceTestRule resources = ResourceTestRule.builder()
.addResource(new MyResource())
.addProvider(MultiPartFeature.class)
.build();
与客户端相同。如果您想在客户端使用多部分序列化,您还需要注册该功能
resource.client().register(MultiPartFeature.class)..
你可以看到一个完整的例子here
关于java - 如何使用 Multipart 特性进行资源测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37263316/