我正在尝试测试一个使用ServiceRegistry
自注册的SpringBoot应用程序(例如Eureka / Consul),然后在关机时注销。该实现只是简单地扩展了已有的Spring Cloud抽象,例如
@Component
public class MyAutoRegistration extends AbstractAutoServiceRegistration<MyRegistration> {
@override
protected void register(){...}
@Override
protected void deregister(){...}
注册和注销的工作在示例应用程序中按预期进行,但是我无法在SpringBootTest中捕获到该消息,因为该测试在进行自我注册之前(即在加载Spring上下文并在日志中显示“应用程序在N秒...”)。同样,测试会在关闭应用程序之前(即在关闭Spring上下文之前)并因此在取消注册之前完成。
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MyClientAutoConfiguration.class)
@EnableAutoConfiguration
public class MyRegistrationTest {
@Autowired
MyRegistration record;
@SpyBean
@Autowired
ServiceRegistry<MyRegistration> registry;
@Test
public void registers_and_deregisters(){
verify(registry, times(1)).register(record);
verify(registry, times(1)).deregister(record);
}
Found a test class的作用类似,但超出了我的理解范围。有没有一种直接的方法可以将自动注册/注销包含到@SpringBootTest中?
答案 0 :(得分:0)
红鲱鱼...我的实际问题是我的类路径上没有spring-boot-starter-web
,它隐式导入了spring-boot-starter-tomcat
。没有这些,我尝试测试的自动注册组件将无法自动配置。将starter-web
重新放在类路径中解决了我的问题。