Cant autowire 'WebTestClient' - нет автоматической настройки

мы используем spring framework 5 и spring boot 2.0.0.M6 и мы также используем WebClient для реактивного программирования. Мы создали методы тестирования для наших конечных точек реактивного отдыха, и поэтому я искал пример того, как это сделать. Я нашел этой одна или этой и многих других, где все то же самое. Они просто autowire a WebTestClient. Поэтому я попробовал то же самое:

@Log
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class MyControllerTest {

    @Autowired
    private WebTestClient webClient;

    @Test
    public void getItems() throws Exception {
        log.info("Test: '/items/get'");

        Parameters params = new Parameters("#s23lkjslökjh12", "2015-09-20/2015-09-27");

        this.webClient.post().uri("/items/get")
                .accept(MediaType.APPLICATION_STREAM_JSON)
                .contentType(MediaType.APPLICATION_STREAM_JSON)
                .body(BodyInserters.fromPublisher(Mono.just(params), Parameters.class))
                .exchange()
                .expectStatus().isOk()
                .expectHeader().contentType(MediaType.APPLICATION_STREAM_JSON)
                .expectBody(Basket.class);
    }
}

Я не могу запустить потому что я получаю ошибку:

Could not autowire. No beans of 'WebTestClient' type found.

так это не кажется, что существует автоматическая конфигурация. Я использую неправильную версию или в чем дело?

2 ответов


аннотации MyControllerTest тест класс @AutoConfigureWebTestClient Примечание. Это должно решить проблему.


принятый ответ будет продолжать бросать эту ошибку для меня, вместо этого мне пришлось добавить стартер webflux помимо тестового стартера в Spring Boot 2.0.3:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

затем используйте стандартные аннотации веб-теста:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class IntegrationTest {

    @Autowired
    private WebTestClient webClient;

    @Test
    public void test() {
        this.webClient.get().uri("/ui/hello.xhtml")
          .exchange().expectStatus().isOk();
    }

}