我正在努力解决一些关于自动化测试和集成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
收集完整的代码有什么建议吗?