gpt4 book ai didi

spring - 仅当设置了特定 Spring 配置文件时才运行集成测试

转载 作者:行者123 更新时间:2023-12-02 03:26:16 25 4
gpt4 key购买 nike

我们的 Spring Boot 应用程序中有多个测试类。有些类包含集成测试,有些类包含单元测试。这意味着如果我(例如使用 maven)让所有测试都被执行,它将运行所有类中的所有测试。

我想要实现的是,仅当设置了特定的 spring 配置文件时才执行集成测试,例如通过 application.yml。我喜欢例如注释整个测试类,以定义仅在设置了指定的 spring 配置文件时才执行此类中的测试。如果未设置,这些测试将被忽略。

  • 主题How can I use @IfProfileValue to test if a Profile is active?正是朝着这个方向发展。 @IfProfileValue 乍一看与我所需要的完全一样。但正如它指出的那样,事实并非如此。如果我设置特定的系统属性,我可以使用它。但我需要使用真正的 spring 配置文件(而不是系统属性 spring.profiles.active - 这会忽略通过 application.yml 设置的配置文件)
  • @Profile 似乎也是我所需要的,但作为主题 Use @Profile to decide to execute test class表明,我们不应该使用它。

那么可以采取什么措施来实现这一目标呢?请注意,有很多关于堆栈溢出的测试和 spring 配置文件的问题。但他们中的大多数都指出了如何在特定于 Spring 型材的测试中设置配置。那不是我想要的。我想执行或忽略测试。

最佳答案

我不知道你到底想如何实现它,但如果你使用 junit 在运行时有条件地忽略一些测试,只需使用配置属性,这里有一种方法:

应用程序属性:

test.enabled=true

然后在您的测试代码中,您可以使用 org.junit.Assume 和如下属性:

@Value("${test.enabled}")
private Boolean testEnabled;

@Test
public void test {
org.junit.Assume.assumeTrue(testEnabled);
// your test code
}

现在,如果将属性 test.enabled 设置为 true,则测试将运行,否则将被忽略。

来源:Conditionally ignoring tests in JUnit 4

关于spring - 仅当设置了特定 Spring 配置文件时才运行集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53320713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com