Java Jersey 测试框架 2.5 - 测试 POST 方法
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/20773123/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Jersey Test Framework 2.5 - test POST method
提问by Vadym Roganin
I'm trying to find some manual how to test POST
methods using jersey
framework, only got examples for GET
method.
我试图找到一些如何POST
使用jersey
框架测试方法的手册,只有GET
方法示例。
Here's example:
下面是例子:
@POST
@Path("add")
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Response addUser(JAXBElement<User> user) {
int code = userService.addUser(user.getValue());
if (code == 500) {
return Response.status(500).build();
}
return Response.status(code).entity(user).build();
}
Could you please post some POST method test example? Thank you in advance.
您能否发布一些 POST 方法测试示例?先感谢您。
采纳答案by Vadym Roganin
After research I did it!
经过研究,我做到了!
Here's my solution, it works just fine. And it's rather integration test, but we can write unit tests in similar manner.
这是我的解决方案,它工作得很好。它更像是集成测试,但我们可以用类似的方式编写单元测试。
public class RestTest extends JerseyTest{
@Override
protected Application configure() {
return new Your_Resource_Config(); //Your resource config with registered classes
}
//@Before and/or @After for db preparing etc. - if you want integration tests
@Test
public void addUserTest() {
User user = new User();
user.setEmail("[email protected]");
user.setName("Jane Doe");
user.getUserRoles().getRoles().add("supertester");
Entity<User> userEntity = Entity.entity(user, MediaType.APPLICATION_XML_TYPE);
target("users/add").request().post(userEntity); //Here we send POST request
Response response = target("users/find").queryParam("email", "[email protected]").request().get(); //Here we send GET request for retrieving results
Assert.assertEquals("[email protected]", response.readEntity(User.class).getEmail());
}