单元测试Spring Boot应用程序端点

时间:2015-01-09 12:47:31

标签: java spring unit-testing

如果这是一个微不足道的问题,我会提前道歉。我来自C#/ .NET的背景,所以我是Spring框架的新手。

我有一个小的Spring Boot应用程序,在" / health"中定义了健康终点。这在代码中定义为:

@Component
public class MyHealthEndpoint implements HealthIndicator {
  public Health health() {
    # ...
    # returns health info as JSON here 
    # ...
  }
}

因此,在运行应用程序时,访问localhost / health端点会返回一些应用程序运行状况信息。

我的问题是:测试这个的最佳方法是什么?

我想对MyHealthEndpoint类进行单元测试,并且我已经尝试在我的测试类中使用@Autowired实例化它,但这并不起作用。 还尝试使用

在测试类中实例化它
MyHealthEndpoint testHealthEndpoint = new MyHealthEndpoint();

但是这只返回一个没有健康信息的空新类,所以很明显Spring Boot中的依赖注入/ IOC没有注册它,或者我只是太多的新手知道Spring了解如何正确地做到这一点。

通过启动应用程序并直接向端点运行测试http GET调用然后断言返回的JSON或者您有更好的想法来运行集成测试是唯一的解决方案吗?

感谢。

1 个答案:

答案 0 :(得分:1)

您应该使用Sprint测试上下文框架 检查一下: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/testing.html#integration-testing-annotations

您可以在此处找到lib:https://maven-repository.com/artifact/org.springframework/spring-test

您应该使用@ContextConfiguration注释测试类(或父类),并且可以设置config xml(locations参数)和config java类(classes参数) 如果您使用SpringMVC也添加@WebAppConfiguration注释

如果已配置,您可以在测试中使用@Autowired。