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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-13 04:14:30  来源:igfitidea点击:

Jersey Test Framework 2.5 - test POST method

javaunit-testingrestjerseyjax-rs

提问by Vadym Roganin

I'm trying to find some manual how to test POSTmethods using jerseyframework, only got examples for GETmethod.

我试图找到一些如何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());

}