Java 单元测试Spring启动应用程序端点

Java 单元测试Spring启动应用程序端点,java,spring,unit-testing,Java,Spring,Unit Testing,如果这是一个无关紧要的问题,我提前道歉。我来自C#/.NET的背景,所以我对Spring框架是新手 我有一个小型Spring启动应用程序,其定义的健康端点位于“/health”。这在代码中定义为: @Component public class MyHealthEndpoint implements HealthIndicator { public Health health() { # ... # returns health info as JSON here

如果这是一个无关紧要的问题,我提前道歉。我来自C#/.NET的背景,所以我对Spring框架是新手

我有一个小型Spring启动应用程序,其定义的健康端点位于“/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,这是运行集成测试的唯一解决方案,还是您有更好的想法


谢谢。

您应该使用Sprint测试上下文框架 选中此项:

您可以在此处找到库:

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


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

同时,我开始使用SpringMVC测试框架,我认为这是测试基于Spring的REST端点的正确解决方案