【发布时间】:2016-04-11 15:11:22
【问题描述】:
目前我的集成测试如下所示:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = PingFacadeApplication.class)
@WebIntegrationTest
public class PingResourceTest {
// some tests that use RestTemplate to contact PingFacadeApplication
}
PingFacadeApplication 是这样定义的:
@SpringBootApplication
@EnableDiscoveryClient
@ComponentScan(basePackages = "edu.self.myapp.ping")
public class PingFacadeApplication {
public static void main(String[] args) {
System.setProperty("spring.config.name", "ping-facade-server");
SpringApplication.run(PingFacadeApplication.class, args);
}
}
当正常启动(即运行 jar)PingFacadeApplication 时,配置文件(ping-facade-server.yml)会从src/main/resources 正确读取。但是,在运行我的集成测试时,配置文件似乎永远不会被读取,因为服务器总是在端口 8080 上启动。我也尝试将配置文件放在 src/test/resources 但没有运气。
我知道我可以更改 WebIntegrationTest 注释中的端口,但我想避免在两个地方使用它。
非常感谢。
【问题讨论】:
-
你确定文件没有被读取,难道只是System.setproperty在那里没有作用?
-
main方法仅在您正常运行应用程序时调用,在运行测试时不调用,因此不会设置系统属性。 -
@AndyWilkinson 确实,该课程必须在内部以另一种方式开始......不过,我找到了解决方法,将其作为答案发布。谢谢!
标签: java rest spring-boot integration-testing