[英]Junit testcase - error - status expected:<200> but was:<500>
[英]Jersey JUnit Test Framework - Error Status 500
我想測試一下:
@Path("fieldgen")
public class VRApi {
@Path("/testCon")
@GET
@Produces(MediaType.APPLICATION_JSON)
public String testCon() {
return "testcon";
}
@Path("/getTestObj")
@GET
@Produces(MediaType.APPLICATION_JSON)
public TestObj getField() {
TestObj tobj= new TestObj ("str1", "str2", "str3");
return tobj;
}
這是我的測試類:
public class TestMB extends JerseyTest{
private WebResource webResource = resource();
public TestMB() throws Exception {
super("...api...");
}
@Test
public void testCon() {
String responseMsg = webResource.path("/fieldgen/testCon").get(String.class);
assertEquals("testcon", responseMsg);
}
@Test
public void getTestObj() {
WebResource.Builder mbRes = webResource.path("/fieldgen/getTestObj").accept(MediaType.APPLICATION_JSON);
TestObj vr = mbRes.get(TestObj.class);
assertEquals(vr, new TestObj("str1", "str2", "str3"));
}
第一次測試沒問題。 第二次測試失敗:
A message body writer for Java class modelVR.TestObj, and Java type class
modelVR.TestObj, and MIME media type application/json was not found
我也嘗試使用ClientResponse。 POM dep。:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.jersey-test-framework</groupId>
<artifactId>jersey-test-framework-inmemory</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.17.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19.3</version>
</dependency>
有什么問題? 謝謝。
您可能缺少“jackson-databind”,其中包括自動POJO到JSON和反向映射器。 (傑克遜1.x的名字可能略有不同)
檢查您是否已經注冊在客戶端POJO的映射功能,如球衣文檔解釋這里 。 相關片段如下。
ClientConfig clientConfig = new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
Client client = Client.create(clientConfig)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.