如何使用随机数据自动测试RESTful Web服务

时间:2016-07-18 07:36:09

标签: java spring

我正在使用springmvc4和spring数据jpa开发RESTful Web服务。好吧,我有大约100多个api用于前端来提取数据。我想要做的是如何使用随机数据自动测试我的所有api。 apis看起来像:

Console.WriteLine()

如果我一个接一个地跟邮递员一起测试,那就浪费了很多时间。当我们开发时,我们应该确保自己的服务是好的。 我有一个解决方案,但我不满意。 这是我的解决方案:

  • 扫描指定包的控制器,然后使用反射 得到类的注释,它可以得到的值 @RequestMapping( “/索引”)。

  • 遍历类的方法并获取方法 注释方式相同,并获得完整的URL。

  • 为请求创建随机数据,执行请求并记录响应。 任何人都可以为此提供解决方案,非常感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

我发现您在api中使用了swagger,您可以使用它来生成客户端代码https://github.com/swagger-api/swagger-codegen以进行自动测试。

答案 1 :(得分:1)

由于您使用的是Spring框架,因此可以尝试以下方法:

  1. 使用Spring Integration Test测试API。它产生了一个 您的服务实例和针对它的测试。
  2. 使用RestAssured& JUnit命中API并断言响应。

答案 2 :(得分:0)

使用RequestMappingHandlerMapping.getHandlerMethods(),您只需使用Spring注入,例如通过 @Autowired 。这将为您提供地图 RequestMappingInfo-> HandlerMethod ,其中包含您需要的所有信息。

您可以使用Spring集成测试支持将测试作为常规JUnit测试运行,而无需邮递员等:

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextHierarchy({
        @ContextConfiguration(name = "root", locations = "classpath:applicationContext.xml"),
        @ContextConfiguration(name = "web", locations = "classpath:xxx-servlet.xml)
})
public class YourTest extends AbstractTransactionalJUnit4SpringContextTests {...}

在此测试中,使用 @Autowired WebApplicationContext 并将其传递给 MockMvcBuilders.webAppContextSetup(webApplicationContext)以创建MockMvc实例。它允许通过简单的界面向Spring的 MockMvc 基础架构提交HTTP请求。

请注意,Spring的 MockMvc 框架不会运行任何真正的应用服务器,如Tomcat。但这可能正是您所需要的,因为它更快。默认情况下,Spring集成测试框架只会针对具有相同Spring配置的所有测试初始化​​Spring应用程序上下文(在测试类或方法上使用 @DirtiesContext 来表示新的Spring应用程序上下文是在特定测试后需要。)

如果您觉得需要在测试中运行Tomcat等实际应用服务器,请检查maven插件,例如 tomcat7-maven-plugin