2016-05-16 62 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