본문 바로가기

개발

스프링부트와 AWS로 혼자 구현하는 웹 서비스 1

반응형

P71 lombok

 

lombok 기능 테스트 코드가 책에서 설정한 그대로 진행하여도 정상적으로 동작하지 않습니다.

import static org.assertj.core.api.Assertions.assertThat;

이 부분에서 부터 assertThat이 정상적으로 import되지 않는 문제가 발생합니다.

따라서 당연히 assertThat method는 호출 불가합니다.

 

해결법

 

1. 오타 확인

static 등을 적지 않을 경우 정상동작하지 않습니다.

 

2. build.gradle에 dependencies 추가

    testCompile "org.projectlombok:lombok"
    annotationProcessor('org.projectlombok:lombok')
    testAnnotationProcessor('org.projectlombok:lombok')
    testCompile("org.assertj:assertj-core:3.11.1")

3. MatcherAssert 사용

        MatcherAssert.assertThat(dto.getName(), CoreMatchers.is(name));
        MatcherAssert.assertThat(dto.getAmount(), CoreMatchers.is(amount));

 

이 방법은 junit의 assertThat을 사용하고 있는 경우 권장되는 방법입니다.

저는 assertj의 assertThat이 아니라 junit의 assertThat을 사용했었는데, 이 method가 Deprecated 되어 org.hamcrest.MatcherAssert.assertThat()의 사용을 공식문서에서 권장하고있습니다.

 

저도 사실 이번에 처음 사용해보는데 그냥 공식문서에 나온 내용을 천천히 따라하면 쉽게 사용 할 수 있습니다.

인텔리제이의 경우 command+b(맥)을 누르면 해당 symbol에 대한 declaration부분으로 이동 할 수 있습니다.

MatcherAssert의 선언부를 읽어보면 actual과 matcher가 필요하다는걸 알 수 있는데, 이때 matcher는 CoreMatchers를 이용하면 됩니다.

이는 여기서도 확인 할 수 있습니다.

        MatcherAssert.assertThat(dto.getName(), CoreMatchers.is(name));
        MatcherAssert.assertThat(dto.getAmount(), CoreMatchers.is(amount));

 

반응형