Spring启动集成测试Web配置

时间:2015-12-29 18:59:17

标签: java spring testing spring-boot configuration

尝试httpClient的工具集成测试。 HttpClient可以使用存根控制器服务为"其他网络发送数据"。

配置是:

@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。

将测试请求发送到默认网址 - 响应状态为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);

请建议如何解决问题。

1 个答案:

答案 0 :(得分:4)

解决方案

需要以正确的方式配置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(有用的建议)。