我正在使用springmvc4和spring数据jpa开发RESTful Web服务。好吧,我有大约100多个api用于前端来提取数据。我想要做的是如何使用随机数据自动测试我的所有api。 apis看起来像:
Console.WriteLine()
如果我一个接一个地跟邮递员一起测试,那就浪费了很多时间。当我们开发时,我们应该确保自己的服务是好的。 我有一个解决方案,但我不满意。 这是我的解决方案:
扫描指定包的控制器,然后使用反射 得到类的注释,它可以得到的值 @RequestMapping( “/索引”)。
遍历类的方法并获取方法 注释方式相同,并获得完整的URL。
答案 0 :(得分:2)
我发现您在api中使用了swagger,您可以使用它来生成客户端代码https://github.com/swagger-api/swagger-codegen以进行自动测试。
答案 1 :(得分:1)
由于您使用的是Spring框架,因此可以尝试以下方法:
答案 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 。