私は前に別のquestionを書きました。 JSONはJersey用の文字列だったので、残りのサービスでJUnitテストを実行するとエラーが発生しました。JUnitで休憩サービスをテストする
public class MachineResponseTest {
private static final String BASE_URI = "http://localhost:8080/dni-fe/home"
@Test
public void testDevice() {
WebResource resource = Client.create().resource(BASE_URI);
resource.accept(MediaType.APPLICATION_JSON);
StringBuilder sb = new StringBuilder();
sb.append("{\"name\":\"123456\",\n");
sb.append(" \"country\":\"Spain\",\n");
sb.append(" \"company\":\"xxx\",\n");
sb.append(" \"model\":\"1.10.0\"\n}");
MachineResponse result = resource.post(MachineResponse.class,sb.toString());
}
そしてIはorg.codehaus.jettison.json.JSONObject
オブジェクトへのStringBuilderを変換し、POJOのinsted文字列を返すようにしようとしました。このように、前のエラーが消えた:例えば、私は私のテストを構築するために、このPOJOを使用しようとした
public class ItemBean implements Serializable {
private static final long serialVersionUID = 7438046484680798158L;
private String name;
private String country;
private String company;
private String model;
public ItemBean() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
:たとえば
try{
StringBuilder sb = new StringBuilder();
sb.append("{\"name\":\"123456\",\n");
sb.append(" \"country\":\"Spain\",\n");
sb.append(" \"company\":\"xxx\",\n");
sb.append(" \"model\":\"1.10.0\"\n}");
JSONObject jsonObj = new JSONObject(sb.toString());
}
catch(JSONException e){
....
}
String result = resource.post(String.class,jsonObj);
、私はこのPOJOクラスがあるとし
ItemBean item = new ItemBean();
item.setName("123456");
item.setCountry("Spain");
item.setCompany("xxxx");
item.setModel("1.10.0");
String result = resource.post(String.class,item);
が、テストはエラーで終了:
com.sun.jersey.api.client.ClientHandlerException: com.sun.jersey.api.client.ClientHandlerException: A message body writer for Java type, class it.dni.rest.models.DeviceBean, and MIME media type, application/octet-stream, was not found at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:151)
私の目標は、JSONとviceversaのオブジェクトを直接マッピングすることですが、Jerseyは私にとってそれをしません。ジュニットテストでJerseyを使用してこのマッピングを有効にするにはどうすればよいですか?
多くの意味がありませんあなたの例を参照してくださいテスト
ためにジャージーのテストを試してみてください'テストクラスの、実際に何もアサートまたは検証していないのですか?質問を[最小限の完全で実証可能な例](http://stackoverflow.com/help/mcve)に改訂してください。 – hotzst
しかし、テストにエラーが発生した場合は、何も試してみることはできません。 – DistribuzioneGaussiana