Spring-boot, JUnit tests using different profiles(Spring-boot,使用不同配置文件的JUnit测试)
问题描述
我正在尝试使用JUnit使用application.properties配置文件进行集成测试,以便检查两个不同的平台。
我尝试使用包含两个平台通用配置的基本配置文件application.properties
执行此操作,在此基础上,我为每个平台添加了具有特定平台配置的属性文件application-tensorflow.properties
application-caffe.properties
,但我发现它在JUnit中的工作方式与我在主应用程序中使用的方法不同。
我的测试配置类如下所示:
@Configuration
@PropertySource("classpath:application.properties")
@CompileStatic
@EnableConfigurationProperties
class TestConfig {...}
我使用的是@PropertySource("classpath:application.properties")
,所以它会识别我的基本配置,我在那里也写了spring.profiles.active=tensorflow
,希望它能识别TensorFlow应用程序配置文件,但是它不会像在主应用程序中那样从文件/src/test/resources/application-tensorflow.properties
或/src/main/resources/application-tensorflow.properties
中读取。
在JUnit测试中是否有指定弹簧配置文件的特殊方法?实现我正在尝试的目标的最佳实践是什么?
推荐答案
首先:将@ActiveProfiles
添加到您的测试类以定义活动配置文件。
- 在与
@ContextConfiguration(classes = TheConfiguration.class, initializers = ConfigFileApplicationContextInitializer.class)
的简单集成测试中
- 在使用
@SpringBootTest
的完全Spring Boot测试中
测试类示例:
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles({ "test" })
public class DummyTest {
@Autowired
private Environment env;
@Test
public void readProps() {
String value = env.getProperty("prop1") + " " + env.getProperty("prop2");
assertEquals("Hello World", value);
}
}
现在评估文件src/test/resources/application.properties
和src/test/resources/application-test.properties
。
这篇关于Spring-boot,使用不同配置文件的JUnit测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Spring-boot,使用不同配置文件的JUnit测试
基础教程推荐
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01