我正在 CDI 中编写 REST 服务。使用了helidon库。当这个服务启动时,它会从另一个服务接收部分配置。这是使用特殊的配置界面完成的org.eclipse.microprofile.config.spi.ConfigSource
。实现该接口的类通过 ServiceLoader 加载,在构造函数中向远程 REST 服务发出请求,从它接收配置,然后将其提供给请求的人。
现在我需要为我的服务编写单元测试。问题是测试引擎在一开始就启动服务,在发生任何事件之前@BeforeAll
,可以配置例如 Mockito 并覆盖此类的工作。该服务闯入一个远程服务,它没有找到它,这就是一切以异常结束的地方。
问题。如何解决这个问题呢?如果在测试阶段 ServiceLoader 根本不创建此配置类的实例,即使该选项也适合我。
已找到解决方案。
ConfigSource
我在 test/java 文件夹中定义了一个实现接口的同名类。结果,ServiceLoader 开始准确地加载测试实现