bootstrap.properties不能与@SpringBootTest一起使用(webEnvironment = WebEnvironment.RANDOM_PORT)

时间:2017-12-10 12:12:17

标签: java spring spring-boot spring-cloud spring-cloud-feign

我正在努力解决一些关于自动化测试和集成tomcat-server配置为使用某个随机端口的弹簧云问题。

首先我opened a bug on the spring-boot project,因为我认为他们有责任采取行动,但是它被一个指向Gitter通道的指针所拒绝,但它也可能是一个好地方。

我的设置包含一个lib,我准备了一个像这样的Feign客户端:

@FeignClient(name = "some-service-name", url = "${someServiceName.rest.url}")
public interface SomeServiceRESTDAO {

    @RequestMapping(value = "/dummy", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public boolean dummy();

}

我们的想法是拥有一些可重复使用的Feign客户端,但不要求有一些注册表,并且具有默认值。这是在bootstrap.properties

someServiceName.rest.url=http://localhost:${server.port}/

这是我的测试类,但没有按预期工作,因为我无法使用我的feign-client进行spring-boot测试:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MainClass.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestPropertySource(properties = {
    // this was some idea to set random port
    "server.port=${random.int[1024,65536]}"
    // this was some idea, but does not propagate
//    "server.port=${local.server.port}"
})
public class MainClassTest {

    @LocalServerPort
    private int localPort;

    @Value("${server.port}")
    private int serverPort;

    @Value("${someServiceName.rest.url}")
    private String clientUrl;

    @Test
    public void dummyTest() {
        System.out.println("LocalPort: " + localPort);
        System.out.println("ServerPort: " + serverPort);
        System.out.println("ClientUrl: " + clientUrl);
        assertTrue(localPort == serverPort);
    }
}

可以从我的github-project

收集完整的代码

有什么建议吗?

0 个答案:

没有答案