单元测试 Spring 启动应用程序端点
Unit testing Spring Boot application endpoints
我有一个小型 Spring 启动应用程序,在“/health”处定义了一个健康端点。这是在代码中定义的:
@Component
public class MyHealthEndpoint implements HealthIndicator {
public Health health() {
# ...
# returns health info as JSON here
# ...
}
}
因此,当 运行 使应用程序访问 localhost/health returns 处的端点时,一些应用程序运行状况信息。
我的问题是:最好的测试方法是什么?
我想对 MyHealthEndpoint class 进行单元测试,我已经尝试在我的测试 class 中使用 @Autowired 对其进行实例化,但这不起作用。
还尝试在测试 class 和
中实例化它
MyHealthEndpoint testHealthEndpoint = new MyHealthEndpoint();
但这只是 returns 一个没有健康信息的空新 class,所以显然 Spring Boot 中的依赖项 injection/IOC 没有注册它,或者我我只是 Spring 的新手,不知道如何正确操作。
是 运行 集成测试的唯一解决方案,方法是启动应用程序并 运行 直接对端点进行测试 http GET 调用,然后声明返回的 JSON 或者执行你有更好的想法吗?
您应该使用 Sprint 测试上下文框架
检查这个:
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/testing.html#integration-testing-annotations
您可以在此处找到该库:https://mvnrepository.com/artifact/org.springframework/spring-test
您应该使用@ContextConfiguration 注释测试classes(或父class)并且您可以设置您的配置xml(位置参数)和配置Java classes(classes参数)
如果你使用 SpringMVC,也添加 @WebAppConfiguration 注解
如果已配置,您可以在测试中使用@Autowired。
我有一个小型 Spring 启动应用程序,在“/health”处定义了一个健康端点。这是在代码中定义的:
@Component
public class MyHealthEndpoint implements HealthIndicator {
public Health health() {
# ...
# returns health info as JSON here
# ...
}
}
因此,当 运行 使应用程序访问 localhost/health returns 处的端点时,一些应用程序运行状况信息。
我的问题是:最好的测试方法是什么?
我想对 MyHealthEndpoint class 进行单元测试,我已经尝试在我的测试 class 中使用 @Autowired 对其进行实例化,但这不起作用。 还尝试在测试 class 和
中实例化它MyHealthEndpoint testHealthEndpoint = new MyHealthEndpoint();
但这只是 returns 一个没有健康信息的空新 class,所以显然 Spring Boot 中的依赖项 injection/IOC 没有注册它,或者我我只是 Spring 的新手,不知道如何正确操作。
是 运行 集成测试的唯一解决方案,方法是启动应用程序并 运行 直接对端点进行测试 http GET 调用,然后声明返回的 JSON 或者执行你有更好的想法吗?
您应该使用 Sprint 测试上下文框架 检查这个: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/testing.html#integration-testing-annotations
您可以在此处找到该库:https://mvnrepository.com/artifact/org.springframework/spring-test
您应该使用@ContextConfiguration 注释测试classes(或父class)并且您可以设置您的配置xml(位置参数)和配置Java classes(classes参数) 如果你使用 SpringMVC,也添加 @WebAppConfiguration 注解
如果已配置,您可以在测试中使用@Autowired。