복붙노트

[SPRING] `WebTestClient` 자동 - 자동 설정 없음

SPRING

`WebTestClient` 자동 - 자동 설정 없음

우리는 스프링 프레임 워크 5와 스프링 부트 2.0.0.M6을 사용하고 있으며 반응 형 프로그래밍을 위해 WebClient를 사용하고 있습니다. 우리는 반응 형 휴지 엔드 포인트에 대한 테스트 메소드를 작성 했으므로이를 수행하는 방법에 대한 예제를 찾아 보았습니다. 나는이 하나 또는 이것과 많은 다른 것들을 발견했다. 그들은 단지 WebTestClient를 autowire합니다. 그래서 나는 같은 것을 시도했다 :

@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. ==============================

    1.@AutoConfigureWebTestClient 주석으로 MyControllerTest 테스트 클래스에 주석을 답니다. 그게 문제를 해결해야합니다.

    @AutoConfigureWebTestClient 주석으로 MyControllerTest 테스트 클래스에 주석을 답니다. 그게 문제를 해결해야합니다.

  2. ==============================

    2.수락 된 대답은 나를 위해 그 오류를 던지기보다는 스프링 부트 2.0.3의 테스트 스타터 외에 webflux 스타터를 추가해야했습니다.

    수락 된 대답은 나를 위해 그 오류를 던지기보다는 스프링 부트 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>
    

    그런 다음 표준 웹 테스트 주석을 사용하십시오.

    @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();
        }
    
    }
    
  3. from https://stackoverflow.com/questions/48226651/cant-autowire-webtestclient-no-auto-configuration by cc-by-sa and MIT license