我正在尝试使用application.properties配置文件进行使用JUnit的集成测试,以便检查两个不同的平台。
我尝试使用基本配置文件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测试中是否有一种特殊的方法来指定弹性曲线?实现我正在尝试的最佳实践是什么?
答案 0 :(得分:3)
首先:将@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
。
答案 1 :(得分:1)
您是否尝试用
注释测试@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles(profiles = {"tensorflow"})
还要确保application-tensorflow.properties在/ src / test / resources下