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

Spring Boot-用prod属性覆盖测试属性

楚畅
2023-03-14

我的测试属性将被放置在生产属性中的属性覆盖。当时,我两人都给application.yml起了名字,但它不起作用,所以我就像这篇文章中说的那样,改成了application-test.yml并使用profile。现在看起来就像贝娄(kotlin):

@SpringBootTest
@ExtendWith(SpringExtension::class)
@ContextConfiguration(classes = [InvalidPropertiesApplication::class])
@ActiveProfiles("test")
@TestPropertySource(locations = ["classpath:application.yml"])
class InvalidPropertiesApplicationTests {
    @Test
    fun contextLoads(@Autowired users: Users) {
        assertEquals("TEST", users.file)
    }
}

src/main/resources/application.yml中,我只将此属性设置为production,而在src/test/resources/application-test.yml中,则设置为test

这个测试失败了。完整示例可在github上找到

Thx提前。

共有1个答案

史英睿
2023-03-14

示例中,使用@TestPropertySource加载的属性比所有其他属性源具有更高的优先级。而“classpath:application.yml”是指src/main/resources/application.yml

顺序:@testpropertysource>application-{profile}.properties/yaml>application.properties/yaml

另请参阅弹簧引导参考指南。

 类似资料:
  • 我有几个POJO,这将有一个货币数额。我的想法是创建一个通用对象(由货币和值组成),然后每当我想在我的POJOs中表示一个货币金额时,就会使用它: 由于将在多个POJO中使用,我无法用注释和属性,因为在所有情况下,列名并不总是相同的。有没有办法注释属性(如上例中的)以提供和属性的列名,以便jOOQ在映射/取消映射POJO时理解它们,类似于Hibernate解释请问?

  • 在我的应用程序中,我有以下属性文件: application.properties application-prod.properties 在里面我有同样的财产 Spring数据源。password=my dev password#用于默认的 spring。数据源。password=${PROD_DATABASE_password}#用于PROD文件 在服务器上,我像这样运行应用程序: java-

  • 假设我有以下SoapApplication启动程序: 那么application.properties中的一些属性在哪里 我更喜欢设置test.properties 我试着做了这样的东西: 和SpringApplication.Run(testconfig.class,args); System.SetProperty(“spring.config.location”,“file:testdata

  • 问题内容: 我注意到编译器不会让我用另一个存储的值覆盖存储的属性(这似乎很奇怪): 但是,我可以使用计算属性来执行此操作: 为什么不允许我再给它一个值? 为什么用存储的属性覆盖是可憎的,而要使用计算的一个犹太洁食呢?他们在想什么呢? 问题答案: 为什么不允许我再给它另一个值? 绝对可以为继承的属性赋予不同的值。如果您在采用该初始值的构造函数中初始化属性,然后传递与派生类不同的值,则可以执行此操作:

  • 我有一个通过Spring云库使用Netflix Hystrix的Spring Boot应用程序,一切正常。 我想重写Hystrix的一些基本属性,例如和/或。不幸的是,我找不到一些开箱即用的Spring Boot属性来执行此操作,那么在应用程序启动时,我需要做什么来设置这些属性呢?

  • 我有一个pom文件,其中某些依赖项的版本号依赖于pom文件设置中指定的项目版本属性。我可以通过命令行覆盖它吗?如果可以,如何操作? 说来话长: 我们目前正在将我们的项目转换为maven,但我们还没有完全实现。有多个模块仍然没有使用maven构建,因此是我们项目中的依赖项(它们通过ant构建到jar中)。发布后,我们希望构建所有这些jar,并包含与父项目相同的版本号。对于发布,执行两个步骤(直到我们