当前位置: 首页 > 知识库问答 >
问题:

spring boot不加载试验柑橘试验期间的特定应用特性

沈高峻
2023-03-14

我正在尝试让spring boot在运行我的Citrus集成测试时自动加载src/test/resources/application.properties文件,而不是src/main/resources/application.properties文件。这些属性在测试期间是可用的,但它们不会覆盖在主spring boot应用程序内部使用的主要属性。

以下是我到目前为止的配置:

src/main/Java/EventPublisher.Java

@SpringBootApplication
@ComponentScan
@EnableAutoConfiguration
public class EventPublisher {

  public static void main(String[] args) {
    SpringApplication.run(EventPublisher.class, args);
  }
}

src/main/resources/application.properti

consumer.to=stream:out

src/test/Java/endpointconfig.Java

@Configuration
@PropertySource("classpath:application.properties")
@SpringBootTest
public class EndpointConfig {
...

src/test/Java/citrustestsit.Java

@Test
@SpringBootTest
public class AutomatedIT extends TestNGCitrusTestRunner {
...

SRC/Test/Resources/Application.Properties

citrus.rest.server.port=7913
consumer.to=localhost:${citrus.rest.server.port}/consumer

pom.xml spring片段

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

我假设存在一个注释或文件结构问题,但到目前为止,我还没有弄清楚是什么问题。

更新

在将文件重命名为application-test.properties并更改pom.xml中的spring-boot插件之后,我获得了要从src/main/resources加载的测试属性:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>${spring-boot.version}</version>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
        <execution>
            <id>pre-integration-test</id>
            <goals>
                <goal>start</goal>
            </goals>
            <configuration>
                <fork>true</fork>
                <profiles>test</profiles>
            </configuration>
        </execution>
        <execution>
            <id>post-integration-test</id>
            <goals>
                <goal>stop</goal>
            </goals>
        </execution>
    </executions>
</plugin>

通过在POM中将配置文件设置为test,现在spring boot加载测试属性。

这似乎不是正确的方法,而且这也将application-test.properties文件的使用限制在主spring boot应用程序中,而不是测试包中。

共有1个答案

穆睿才
2023-03-14

您将这两个文件称为完全相同的东西application.properties。这意味着只读取优先级最高的单个文件;在本例中,它是src/test中的一个。相反,使用spring的配置文件特性将重写文件重命名为src/test/resources/application-test.properties,这将允许Boot查看这两个文件并应用所需的覆盖逻辑。

 类似资料:
  • 这部分介绍一些正处于试验阶段的Scrapy特性, 这些特性所涉及到的函数接口等还不够稳定, 但会在以后的发布版中趋于完善。所以在使用这些特性过程中需更谨慎, 并且最好订阅我们的 邮件列表 以便接收任何有关特性改变的通知。 虽然这些特性不会频繁的被修改,但是这部分文档仍有可能是过时的、 不完整的或是与已经稳定的特性文档重复。所以你需要自行承担使用风险。 警告 本部分文档一直处于修改中。请自行承担使用

  • 我正在编写集成测试,我想使用Spring配置文件为每个环境配置属性。但是,我发现src/test/resources目录中特定于配置文件的应用程序属性(例如,application-dev.yml、application-prod.yml)的激活方式与src/main/resources中的不同。使用运行测试似乎没有效果。是否可以从命令行激活一个配置文件进行测试? 注意:是不够的,因为我想对多个环

  • etcd 项目的大部分是稳定的,但是我们依然在快速前行!我们信仰快速发布的哲学。我们想得到还在开发和完善中的特性的早期反馈。因此,有,而且将会有更多,试验性的特性和 API。我们计划基于社区的早期反馈来在后面几个发布中改进这些特性,或者如果没有人有兴趣就中止他们。如果你正在运行一个产品系统,请不要依赖任何试验性的特性或者API。 当前试验性的 API/特性是: (暂无)

  • 我正在使用一个spring启动应用程序,它运行我的src/main/resources/config/application。yml。 当我通过以下方式运行测试用例时: 测试代码仍在运行我的应用程序。要加载属性的yml文件。我想知道是否有可能再运行一个*。运行测试用例时的yml文件。

  • 我的目标是让测试范围内的一些属性覆盖环境特定的属性,并且永远不会捆绑并运送到目标环境。这是我如何组织它们的。 src/main/资源/application-dev.properties src/测试/资源/应用程序测试。属性 但当我尝试将这两个概要文件作为spring活动概要文件传递时,测试失败了。 错误: 有没有其他方法来实现同样的目标?TIA

  • 我需要验证一个JSON响应(如下所示),并检查JSON数组中是否有任何一个项的日期为createdDate。 “createdDate”实际上是作为时间戳返回的,但我没有实际值。我唯一需要验证的是今天的日期。项目的顺序也不保证。我查看了https://intuit.github.io/karate/指定的javascript宏,但它没有我正在尝试做的示例。请让我知道任何建议。