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

加载不同的应用程序。SpringBoot测试中的yml

裴欣然
2023-03-14

我正在使用一个spring启动应用程序,它运行我的src/main/resources/config/application。yml。

当我通过以下方式运行测试用例时:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration
@IntegrationTest
public class MyIntTest{
}

测试代码仍在运行我的应用程序。要加载属性的yml文件。我想知道是否有可能再运行一个*。运行测试用例时的yml文件。

共有3个答案

彭鸿哲
2023-03-14

您可以使用@TestPropertySource加载不同的属性/yaml文件

@TestPropertySource(locations="classpath:test.properties")
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(Application.class)
public class MyIntTest{

}

或者,如果只想覆盖特定属性/yaml,则可以使用

@TestPropertySource(
        properties = {
                "spring.jpa.hibernate.ddl-auto=validate",
                "liquibase.enabled=false"
        }
)
林波鸿
2023-03-14

您可以在src/test/Resources/config/application.yml文件中设置测试属性。Spring Boot测试用例将从测试目录中的application.yml文件中获取属性。

config文件夹是在Spring Boot中预定义的。

根据文件:

如果你不喜欢这个应用程序。属性作为配置文件名,您可以通过指定spring切换到另一个文件名。配置。命名环境属性。也可以使用Spring来引用显式位置。配置。位置环境属性(以逗号分隔的目录位置或文件路径列表)。以下示例显示了如何指定不同的文件名:

java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

这同样适用于应用程序。yml

文档:

https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-具有外部配置应用程序属性文件

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-具有外部配置应用程序属性文件

狄兴邦
2023-03-14

一种选择是使用配置文件。创建一个名为application-test.yml的文件,将这些测试所需的所有属性移动到该文件中,然后将@ActiveProfile注释添加到测试类中:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration
@IntegrationTest
@ActiveProfiles("test") // Like this
public class MyIntTest{
}

请注意,它将额外加载应用程序测试。yml,所以应用程序中的所有属性。yml也将继续应用。如果您不想这样做,那么也可以使用这些配置文件,或者在应用程序测试中重写它们。yml。

 类似资料:
  • 使用spring-boot时,一切工作都很好。尽管如此,在spring-boot中已删除了注释和。我试图将代码重构为新版本,但我做不到。对于以下测试,我的应用程序在测试之前没有启动,http://localhost:8080返回404: 如何重构测试以使其在Spring-Boot1.5中工作?

  • 我的SpringBoot应用程序中有一个控制器: 我想在mocks的帮助下,将其与服务分开进行测试。如何实施?

  • 集成测试: 当我偶尔运行这个测试时,一切都很好,但是当我和其他测试一起运行它时,没有使用模拟的ServerThroughRabbitMQ,所以一些spring缓存强制使用旧的rabbit侦听器。 我试图调试它,我可以看到,正确的bean被autowired到测试中,但由于某些原因旧监听器使用(旧bean字段instanceID=1新mocked bean instanceID=3),测试失败(不确

  • 我在我的src/test/resources路径中创建了一个application-integrationtest.yaml,所以我的测试是针对创建的docker TestContainer运行的。问题是没有加载我的application-integrationtest.yaml。 我正在运行一个SpringBoot2.x应用程序 原因:org.springframework.beans.Bean

  • 这是一个与工作相关的web应用程序,使用Spring Boot 1.5.18,Cucumber 4.2.2。 目录结构是src/main/java,用于我所有的java类和包,src/main/resources以及application.properties和其他一些目录结构,一个具有环境日志和安全属性的根级文件夹。然后,我有src/test/java和我的cucumber代码,还有src/te

  • 我有一个java应用程序(没有Spring)。此应用程序的副本在另一台服务器上工作,另一个数据库实例。数据库表“设置”有属性主Y或N(用于副本)。在主上的任何操作后,我向kafka发送消息,kafka向副本发送操作,并使用db更新操作。测试此过程的整个周期有什么想法吗? 我使用测试容器来获取kafka和数据库。但是我不知道如何在测试容器实例中启动我的db应用程序。