我正在尝试让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应用程序中,而不是测试包中。
您将这两个文件称为完全相同的东西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宏,但它没有我正在尝试做的示例。请让我知道任何建议。