【发布时间】:2020-08-18 10:03:49
【问题描述】:
我有 2 个微服务 A 和 B,它们在自己的项目中为它们定义了黄瓜测试。
服务A
@ContextConfiguration(classes = [AppConfiguration::class])
class ServiceAStepDefs @Autowired constructor(private var serviceAProfile: ServiceAProfile) : En {
//stepdefs live here
}
class AppConfiguration {
@Bean
fun serviceAProfileMaker(): ServiceAEnvironmentProfile {
val oktaConfig = DefaultOAuth2Config.getToken()
return ProfileManager.getEnvProfile(token)
}
}
服务 B
@ContextConfiguration(classes = [AppConfiguration::class])
class ServiceBStepDefs {
//stepdefs live here
}
@ComponentScan("com.hello.*")
class AppConfiguration {
@Bean
fun serviceBProfileMaker(): ServiceBEnvironmentProfile {
val token = DefaultOAuth2Config.getToken()
return ProfileManager.getEnvProfile(token)
}
}
在另一个项目 C 中,我想一起测试这两个服务。为此,我创建了一个 jar 文件,其中包含每个服务的步骤定义,并将它们作为依赖项拉入项目 C。
当我尝试使用服务 A 和服务 B 中的步骤从项目 C 运行黄瓜测试时,我看到两个项目中都使用 Spring 上下文的问题,我猜这是正确的。
10:17:59.936 [DEBUG] [TestEventLogger] io.cucumber.core.backend.CucumberBackendException: Glue class class com.hello.serviceA.stepdefs.ServiceASteps and class com.hello.stepdefs.ServiceBSteps both attempt to configure the spring context. Please ensure only one glue class configures the spring context
我有没有办法连接这两个服务,以便我可以为这两个服务配置 Bean 并重用这些步骤?
【问题讨论】:
标签: spring kotlin cucumber cucumber-jvm