Spring WebMvcTest卡在实例化测试步骤中

时间:2019-08-13 17:11:31

标签: java spring groovy spring-test-mvc

我在groovy上有控制器

@RestController
@RequestMapping('/v1')
@CompileStatic
class DatasourceResource {

    private final DatasourceService datasourceService

    @Autowired
    DatasourceResource(final DatasourceService datasourceService) {
        this.datasourceService = datasourceService
    }
    @Secured(hasAuthority = 'RADAR_LITE_SERVICE_DATA_ACCESS')
    @GetMapping(value = '`/datasources/types', headers = 'token', produces = MediaType.APPLICATION_JSON_VALUE)
    Response<List<String>> getDatabaseType() {
        return new Response(DatabaseType.values()*.toString())
    }
}

我在Java上编写了简单的测试

@RunWith(SpringRunner.class)
@WebMvcTest(DatasourceResource.class)
public class DatasourceResourceTest {

    @MockBean
    private DatasourceService datasourceService;
    @Autowired
    private MockMvc mockMvc;

    @Test
    public void getDatabaseType() throws Exception {
        mockMvc.perform(post("/v1/datasources/types"))
                .andExpect(status().isOk());
    }
}

但是当我运行测试时,它停留在IDEA中的“实例化测试”步骤上。 即使我从终端启动此任务,测试任务也会卡住。 它仅在测试上卡住,如果我删除@WebMvcTest批注和嘲笑MvcMvc字段和测试主体,它将不会卡住,并且会通过。 看起来像春天无法启动上下文或Tomcat。我该如何检查或解决?

我们使用SpringBoot 2.1.0.RELEASE

1 个答案:

答案 0 :(得分:0)

好的。问题出在配置服务连接的配置中。索马(Soma)坏家伙(不是我)将其放置在bootstrap.yml文件中

retry:
        max-attempts: 10000

当我启动@WebMvcTest时,他尝试连接到配置服务1000次,它看起来像堆栈。 我在测试包中创建了bootstrap.yml来覆盖此配置。

spring:
  cloud:
    config:
      enabled: false

现在它不尝试连接到配置服务并以默认属性开始。 如果您现在如何以更正确的方式做到这一点,请告诉我!