2017-01-04 18 views
0

私は前に別の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を使用してこのマッピングを有効にするにはどうすればよいですか?

+0

多くの意味がありませんあなたの例を参照してくださいテスト

Jersey Test Framework originated as an internal tool used for verifying the correct implementation of server-side components. Testing RESTful applications became a more pressing issue with "modern" approaches like test-driven development and users started to look for a tool that could help with designing and running the tests as fast as possible but with many options related to test execution environment. Current implementation of Jersey Test Framework supports the following set of features: pre-configured client to access deployed application support for multiple containers - grizzly, in-memory, jdk, simple, jetty able to run against any external container automated configurable traffic logging Jersey Test Framework is primarily based on JUnit but you can run tests using TestNG as well. It works almost out-of-the box and it is easy to integrate it within your Maven-based project. While it is usable on all environments where you can run JUnit, we support primarily the Maven-based setups.

ためにジャージーのテストを試してみてください'テストクラスの、実際に何もアサートまたは検証していないのですか?質問を[最小限の完全で実証可能な例](http://stackoverflow.com/help/mcve)に改訂してください。 – hotzst

+0

しかし、テストにエラーが発生した場合は、何も試してみることはできません。 – DistribuzioneGaussiana

答えて

2

REST Webサービスの単体テストに本当に役立つライブラリはほとんどありません。安心:は1、Unirest http://unirest.io/は別です。私はUnirestを使い始めたばかりで、JSONで使うのはとても簡単です。一見の価値があるかもしれません。 `あなたが最後のコード例で参照resource`唯一の方法でインスタンス化された`にTestDevice:

関連する問題