Cant autwire `WebTestClient` - нет автоматической конфигурации

Мы используем Spring Framework 5 и Spring Boot 2.0.0.M6, и мы также используем WebClient для реактивного программирования. Мы создали тестовые методы для наших конечных точек реактивного отдыха, и поэтому я нашел пример того, как это сделать. Я нашел этот один или этот и многие другие, которые, где все то же самое. Они просто автоматически подключают 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.

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

Ответ 1

Аннотировать тестовый класс MyControllerTest с помощью аннотации @AutoConfigureWebTestClient. Это должно решить проблему.

Ответ 2

Принятый ответ продолжает вызывать эту ошибку, вместо этого мне пришлось добавить стартер 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();
    }

}