【问题标题】:Integration testing with remote restful service与远程 RESTful 服务的集成测试
【发布时间】:2014-04-04 10:59:25
【问题描述】:

我的任务是实现必须使用远程restful 服务集成测试。问题是,我们不希望将任何测试数据放入真正的宁静服务中。

一般我们有:

负责从 RESTful 保存和加载数据的控制器:

    @RequestMapping(value="/user/save", method = RequestMethod.POST)    
    saveUserData(@RequestParam String data, @RequestParam String user){

        // here is the logic to send the data to save
        restfulClient.save(user, data);
    }

    @RequestMapping(value="/user/load", method = RequestMethod.POST)
    loadUserData(@RequestParam String data , @RequestParam String user){

        // here is the logic to load the data from restful service 
        return restfulClient.load(user, data);
    }

RestfulClient 只是向远程 Restful 服务发出 put 和 get 请求以保存和加载用户数据。

2 黄瓜场景:

    When user User is saving data some_data
    Then user User sees saved data is some_data

3 黄瓜测试:

@When("^user (.+) is saving data (.+)$")
public void whenSave(String userName, String data) throws Exception {
    MockHttpServletRequestBuilder req = post("/user/save").contentType(APPLICATION_JSON_UTF8).content(data);
    callUrl = getMockMvc().perform(req.session(userName));
}

@Then("^user (.+) sees saved data is (.+)$")
public void thenResponseAndDataAreCorrect(String userName, String data) throws Exception {
    MockHttpServletRequestBuilder req = get("/user/load").content(data);
    callUrl = getMockMvc().perform(req.session(req.session(userName));
    callUrl.andExpect(status().isOk());
    callUrl.andExpect(jsonPath("$.Records[*].data", hasItems(userName)));
}

测试可以在不同的线程中同时执行,因此每个测试的 user_id 可以不同。在这种情况下,我们需要为每个 id 写入和读取数据。

http://some.restful.service/{user_id}

很高兴知道我们可以在上述情况下使用的一些方法。

【问题讨论】:

  • 嗯,你问的是微不足道的。您是否考虑过使用dbunit (dbunit.sourceforge.neta)?通过使用它,您可以在运行测试之前为数据库设置状态,并在测试完成后删除所有测试创建的数据。
  • 远程 RESTful 服务是否在您的控制之下?您可以复制一份用于测试目的,以防止对现场环境造成任何中毒吗?如果没有,您可能需要考虑模拟这个 RESTful 服务(通过创建您自己的简化版本),并针对它运行集成测试。
  • 我们选择了模拟 RESTful 客户端的方法。
  • 我个人同意你的嘲笑方法。也希望 SoapUI 能对你有所帮助soapui.org/Getting-Started/mock-services.html

标签: java rest integration-testing cucumber-jvm


【解决方案1】:

您使用的是哪种软件项目管理?例如。您可以使用 maven 并且可以启动集成测试。点击这里获取更多帮助:http://clearqa.blogspot.com.es/2013/04/fun-with-cucumber-jvm-bdd.html

【讨论】:

    猜你喜欢
    • 2018-11-18
    • 2016-01-06
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 2013-06-30
    相关资源
    最近更新 更多