如果这是一个微不足道的问题,我会提前道歉。我来自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或者您有更好的想法来运行集成测试是唯一的解决方案吗?
感谢。
答案 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。