2017-08-14 25 views
2

我們使用javax.ws.rs.core.Response.readEntity(Class類型)將JSON響應解析爲POJO。我想編寫測試以確保實體正確映射到POJO中 - 所以如果json中的布爾「有效」爲真,POJO中也是如此,反之亦然。如何測試javax Response.readEntity(類<T>類型)?

我不知道該怎麼做。任何想法或提示?

回答

3

我想寫測試,以確保實體被正確地映射到POJO

如果你要測試的是,POJO映射是否正確,並且您使用傑克遜作爲JSON提供者,您可以簡單地使用ObjectMapper來反序列化JSON。這就是如何Dropwizard recommends testing models

final ObjectMapper mapper = new ObjectMapper(); 
POJO pojo = mapper.readValue(jsonString, POJO.class); 
// assertions 
+0

那很簡單吧。謝謝你,先生。 – user1682170

2

測試編組是jax-rs服務中那些不容易用普通的junit測試進行測試的事情之一。例如,您如何確保您沒有忘記註釋@Path@QueryParam,以便您的junit測試調用方法成功,但實際調用服務失敗。

Arquillian爲這些測試提供瞭解決方案。本質上,Arquillian允許在正在運行的javaee容器中執行測試。測試設置包括構建您的戰爭,並部署您的應用程序。通過這種方式,您可以測試堆棧中的所有元素,並確保所有元素一致:編組,請求路由,http過濾器......

如果您使用的是jersey jax-rs堆棧,則可以使用JerseyTest

Arquillian更完整,因爲它支持使用多個容器進行測試(甚至是硒支持),並且不會將您與jax-rs實現捆綁在一起。

+0

請注意,我只想測試我們構建消費我們的API的客戶端。這些客戶端與API分離 - 所以我只想以某種方式提供API的預期響應,並聲明我的客戶端按預期處理它。所以是的 - 我希望如果可能的話,用普通的junit測試來做。 – user1682170