Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法在测试类之前重新加载application.yml?_Java_Spring Boot_Configuration_Integration Testing - Fatal编程技术网

Java 有没有办法在测试类之前重新加载application.yml?

Java 有没有办法在测试类之前重新加载application.yml?,java,spring-boot,configuration,integration-testing,Java,Spring Boot,Configuration,Integration Testing,我试图在我的类中使用@SpringBootTest和@ActiveProfile(“test”)测试一个方法。当我运行新的测试时,一切正常,属性从测试YML文件正确加载。但是当我运行所有测试时,这些测试从生产YML文件加载属性 我尝试在新的测试类上使用@DirtiesContext,使用BEFORE_类和BEFORE_EACH_方法标志,但似乎没有帮助 我有一些类似于以下内容: @ActiveProfiles("test") @SpringBootTest public class NewTe

我试图在我的类中使用@SpringBootTest和@ActiveProfile(“test”)测试一个方法。当我运行新的测试时,一切正常,属性从测试YML文件正确加载。但是当我运行所有测试时,这些测试从生产YML文件加载属性

我尝试在新的测试类上使用@DirtiesContext,使用BEFORE_类和BEFORE_EACH_方法标志,但似乎没有帮助

我有一些类似于以下内容:


@ActiveProfiles("test")
@SpringBootTest
public class NewTestClass{

     ...

    @Test
    public void testThatLoadsPropertiesAndShouldLoadApplicationTestYmlFile() {
    ...
    }

}

我错过了什么?有解决这个问题的简单方法吗

更新


我使用JUnit5中的@Disable禁用了项目上的其他集成测试,并检查问题是否仍然存在。令人惊讶的是,它做到了。所以我怀疑这不是一个
ApplicationContext
缓存问题

提供了问题描述后,我只能建议配置另一个测试套件,以便使用生产配置(yml)设置上下文。请参考此答案(提出的问题在某种程度上类似……):

好的,我相信我找到了问题的原因。我使用IntelliJ运行所有测试,但“所有测试”由JUnit插件管理,单个测试由Gradle插件管理。使用gradle运行“所有测试”后,一切正常。

请在测试资源上创建
application.yml
文件
/src/test/resources/
@reflexdemon我已配置此文件。问题是,当我只运行带有
@activeProfiles(“test”)
注释的类的测试时,spring会按照您的建议加载测试文件,但当我运行包含其他集成测试的所有测试时,spring似乎会在
/src/main/resources
上加载文件,这个问题不应该发生,因为活动概要文件是应用程序上下文缓存策略的关键之一。因此,因为我有这个类的“测试”概要文件,而在其他类中我有默认概要文件,所以Spring可能没有为这些不同的测试使用相同的上下文。