web-dev-qa-db-ja.com

Cant autowire `WebTestClient`-自動設定なし

スプリングフレームワーク5とスプリングブート2.0.0.M6を使用しており、リアクティブプログラミングにもWebClientを使用しています。リアクティブレストエンドポイントのテストメソッドを作成したので、その方法の例を探しました。私は this oneまたは this を見つけましたが、他の多くのものはすべて同じです。それらは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.

そのため、自動構成が存在するようには見えません。間違ったバージョンを使用していますか、それともここでの問題は何ですか?

16
Mulgard

MyControllerTestテストクラスに@AutoConfigureWebTestClientアノテーションを付けます。これで問題が解決するはずです。

30
Lukáš Kořán

受け入れられた答えは私のためにそのエラーを投げ続けますが、代わりにSpring Boot 2.0.3のテストスターターに加えてwebfluxスターターを追加する必要がありました:

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

次に、標準のWebテストアノテーションを使用します。

@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();
    }

}
20
Xtreme Biker