Java Spring boot集成测试web配置

Java Spring boot集成测试web配置,java,spring,testing,spring-boot,configuration,Java,Spring,Testing,Spring Boot,Configuration,正在尝试为httpClient实现集成测试。 HttpClient可以使用存根rest控制器服务为“其他web”发送数据 配置为: @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = { SpringMvcApplicationConfiguration.class , StorageConfiguration.class , … }) @WebIntegra

正在尝试为httpClient实现集成测试。 HttpClient可以使用存根rest控制器服务为“其他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;
…
}
测试正确开始加载我所有配置的竞赛。 正在检查映射。getHandlerMethods()-映射中存在的所有URI

正在向默认url发送测试请求-响应状态为200, 但是发送给其他人(尝试从映射的URI中发送一些)-响应状态为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(有用的建议)。

更多细节。爪哇7。基于Maven的构建。基于spring@Configuration的web应用程序。它没有web.xml,它不是基于Spring引导的。使用实现WebApplicationInitializer的类配置的Web容器。如果war部署到目标web容器,应用程序将启动。集成测试需要嵌入式服务器。嵌入式服务器的配置和前面描述的一样,但它不使用由spring创建的RequestMappingHandlerMapping对象,所以TestRestTemplate不能使用Rest服务。但我在考试中需要rest服务。