微服务拆分为多模块后Cucumber测试异常求助
多模块拆分后Cucumber+SpringBoot测试上下文加载失败求助
背景
为解决性能问题,我们将微服务拆分为以下多模块结构:
- Common Module:包含通用逻辑的共享类库
- Main Module:核心处理模块
- Visu Module:可视化功能专属模块
我们使用Cucumber进行测试,拆分前的测试配置运行正常,拆分后出现一系列错误。
原测试配置(拆分前)
Cucumber测试类
@RunWith(Cucumber.class) @CucumberOptions(features = "classpath:features", plugin = "pretty", glue = "fr.***.***.commande.services") public class CucumberTest { }
测试配置基类
@RunWith(SpringRunner.class) @ContextConfiguration(classes = Application.class) @CucumberContextConfiguration @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @Testcontainers public abstract class ApplicationTest { @ClassRule public static TestPostgresContainer postgres = TestPostgresContainer.getInstance(); }
拆分后遇到的问题
初始错误
拆分模块后运行测试,抛出以下错误:
"Provide a glue option or specify with either @CucumberContextConfiguration or @ContextConfiguration."
修复尝试及新错误
为解决上述问题,我将所有配置集中到一个文件中,显式指定组件扫描路径、SpringBoot应用类及测试容器配置:
@RunWith(Cucumber.class) @CucumberOptions( features = "classpath:features", plugin = {"pretty"}) @CucumberContextConfiguration @ComponentScan(basePackages = { "**.******.******.******.common", "**.******.******.******.traitement.services" }) @SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @Testcontainers public class CucumberTest { @ClassRule public static TestPostgresContainer postgres = TestPostgresContainer .getInstance(); }
修改后仍无法正常运行,出现新的应用上下文加载失败错误:
Errors: [ERROR] CucumberTest » StoppedByUser [ERROR] Failed to load ApplicationContext for [WebMergedContextConfiguration@66019544 testClass = **.******.******.******.traitement.CucumberTest, locations = [], classes = [**.******.******.******.traitement.Application], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [] .... (truncated)
已尝试现有认知范围内的解决方案,但问题仍未解决,寻求帮助。
内容的提问来源于stack exchange,提问作者Nadir Belmokhtar
相关产品推荐
相关产品推荐

