Spring 启动集成测试网络配置

Spring boot integrationTest web configuration

正在尝试为 httpClient 实施集成测试。 HttpClient 可以使用存根 rest 控制器服务为 "other web".

发送数据

配置为:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {
     SpringMvcApplicationConfiguration.class
    , StorageConfiguration.class
    , …
})
@WebIntegrationTest({"server.port=8080", "management.port=0"})
@Transactional
public class HttpSendHelperTest {
  private final static Logger LOGGER =     LoggerFactory.getLogger(HttpSendHelperTest.class);

  @Inject
  private HttpSendHelper httpSendHelper;
  @Inject
  private RequestMappingHandlerMapping mapping;
…
}

测试开始正确加载我配置的所有比赛。 检查 mapping.getHandlerMethods() - 地图中存在所有 uris。

默认发送测试请求url - 响应状态为 200, 但发送给其他人(从映射的 uris 尝试一些)- 响应状态为 404。

RestTemplate restTemplate = new TestRestTemplate();


restTemplate.postForEntity("http://localhost:8080/",
    StubBuilder.getInspection(), String.class)

responseEntity = restTemplate.postForEntity("http://localhost:8080/stub/send",
    StubBuilder.getInspection(), String.class);

请提出解决问题的方法。

解决方案

需要正确配置springBoot

@RunWith(SpringJUnit4ClassRunner.class)
@WebIntegrationTest({"server.port=8080", "management.port=0"})
@Transactional
@SpringApplicationConfiguration(classes = SpringBootApplicationForTest.class)
public class HttpSendHelperTest {

添加SpringBootApplicationForTest.class

@EnableConfigurationProperties(value =
                                   {
                                       StorageConfiguration.class
                                   }
)
@EnableAutoConfiguration(exclude = {
    DataSourceAutoConfiguration.class
    , VelocityAutoConfiguration.class
})
@EntityScan(basePackages = {
    "my.entities.path"
})
@SpringBootApplication
public class SpringBootApplicationForTest {
  public static void main(String[] args) {
    SpringApplication.run(SpringBootApplicationForTest.class, args);
  }

}

非常感谢 Petri Kainulainen(有用的建议)。