gpt4 book ai didi

java - 运行集成测试时,Maven 不会初始化 spring 上下文属性

转载 作者:太空宇宙 更新时间:2023-11-04 12:32:20 25 4
gpt4 key购买 nike

问题:从 maven 运行集成测试(mvn verify)时,spring 应用程序上下文未正确初始化,它没有考虑我的自定义 ApplicationContextInitializer 类。

测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {MainApplication.class}, initializers = CustomContextInitializer.class)
@WebIntegrationTest
public class ApplicationIT {

// Running a SOAPUI suite as a JUnit Test
@Test
public void TestGateway() throws Exception {
SoapUITestCaseRunner runner = new SoapUITestCaseRunner();
runner.setProjectFile("../gateway/src/test/resources/soapui/gateway-soapui.xml");
runner.run();
}

}

MainApplication 类:

@Configuration
@ComponentScan(basePackages = {
// different packages here (not relevant)
})
@EnableAutoConfiguration
public class MainApplication {

public static void main(String[] args) throws Exception {
new SpringApplicationBuilder(MainApplication.class)
.initializers(new CustomContextInitializer())
.run(args);
}
}

CustomContextInitiliazer类(用于将自定义.properties文件添加到spring环境应用程序上下文):

public class CustomContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext>{

@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
ConfigurableEnvironment env = applicationContext.getEnvironment();

try {
Resource[] res = new PathMatchingResourcePatternResolver().getResources("classpath*:/*.properties");
for (Resource re : res) {
env.getPropertySources().addFirst(new ResourcePropertySource(re));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

结果:

1)当我启动并运行应用程序(从 IDE 或通过调用 mvn exec)时,一切正常。

2) 从 IDE 启动时集成测试运行正常。

3) 通过 ma​​ven verify 调用时,集成测试会抛出错误,因为自定义属性文件未加载到 spring 上下文环境中。结果就像我不会在测试类中编写 initializers = CustomContextInitializer.class 并尝试从 IDE 运行测试一样。

最佳答案

我认为你的代码是正确的,但是你的.properties文件可能位于错误的位置。确保它们位于<project>/src/main/resources下或者您已经在 Maven 中配置了自定义资源文件夹。如果他们居住在 <project>/src/main/java就 Maven 而言,它们不会成为类路径的一部分。

关于java - 运行集成测试时,Maven 不会初始化 spring 上下文属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37723228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com