【发布时间】:2020-09-22 10:43:55
【问题描述】:
我有一个 Spring Config 类,我想在应用程序运行时加载它。
@Configuration
public class EventHubConfiguration {
@Bean
@ConfigurationProperties(...)
public EventHubClient someClient(final String namespace,
final String eventHubName,
final String sasKeyName,
final String sasKey) throws IOException, EventHubException {
ConnectionStringBuilder connStr = new ConnectionStringBuilder()
.setNamespaceName(namespace)
.setEventHubName(eventHubName)
.setSasKeyName(sasKeyName)
.setSasKey(sasKey);
return EventHubClient.createSync(connStr.toString(), Executors.newSingleThreadScheduledExecutor());
}
}
但是,当我的集成测试运行时,如何防止它加载。例如,当我做mvn clean test 或作为我构建的一部分时。我不希望在集成测试期间创建 eventthub 客户端。
【问题讨论】:
-
使用单独的配置文件,或首先模拟该 bean,使用
@Primary+@Bean在测试上下文中提供另一个模拟实现,使用适合您的@ConditionalOn(...)变体,可能还有更多我可以使用的方法我不知道 -
要让 DI 容器工作,您需要一个 bean,即使它只是一个测试虚拟对象。
标签: java spring spring-boot