이번 포스팅에선 AssertJ에 대해서 알아보고 Hamcrest와 비교해보고 JUnit 5, Hamcrest 에서 AssertJ로 마이그레이션 하는 방법에 대해 알아보겠습니다.)
AssertJ
간단하게 AssertJ에 대해서 알아보겠습니다.
AssertJ도 spring-boot-starter-test에 포함되어 있습니다.
혹시 spring-boot-starter-test를 사용하지 않는다면 의존성 추가를 해주세요.
//Maven
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<!-- use 2.9.1 for Java 7 projects -->
<version>3.11.1</version>
<scope>test</scope>
</dependency>
//Gradle
testCompile("org.assertj:assertj-core:3.11.1")
testCompile("org.assertj:assertj-core:2.9.1") //version 2.9.1 for Java 7 projects
AssertJ도 Hamcrest와 동일하게 테스트하는 메소드는 assertThat 1개입니다.
메소드명 | 설명 |
assertThat(T actual) | 테스트 시작 메소드 |
AssertJ의 assertions은 assertThat("actual").isEqualTo("actual)와 같이 메소드 체이닝 방식을 사용합니다.
package com.effortguy.junit5.assertj;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class test {
@Test
void testAssertThatIsEqualTo() {
assertThat("test").isEqualTo("test");
}
}
이번 포스팅에선 별도 메소드들을 정리하지 않으려고 합니다. assertions 메소드만 알아도 충분히 바로 적용할 수 있기 떄문입니다. AssertJ엔 엄청 많은 assertions들이 있고 이전 포스팅 Hamcrest이 제공하는 기능 대부분을 동일하게 제공하고 있으니 이전 포스팅에서 메소드명을 검색해서 동일한 메소드를 찾으시면 될 거 같습니다. (더 자세한 정보를 얻고 싶으시면 AssertJ 공식 사이트, AssertJ Github을 참고 부탁드립니다.)
Hamcrest VS AssertJ
assertThat을 보면 Hamcrest는 assertions가 메소드 안에 인자로 있고 AssertJ는 단순히 테스트할 값만 받고 메소드 체이닝으로 assertions를 구현해놨습니다.
Hamcrest : assertThat(T actual, Matcher<? super T> matcher)
AssertJ : assertThat(T actual)
Hamcrest를 쓰면 Matcher 명을 외워서 사용하거나 필요한 Matcher가 있으면 구글링을 해야 하는 불편함이 있는데
AssertJ는 actual 타입에 따라 사용할 수 있는 assertions이 메소드 체이닝 형식으로 구현되어 있어 굳이 메소드의 풀네임을 알필요가 없고 기억이 안 나도 IDE에서 사용할 수 있는 assertions을 보여주기 때문에 아주 편리하게 사용할 수 있습니다.
"AssertJ가 더 편리한 이유"를 백기선님이 올려주신 영상이 있습니다. 한 번 보시는 것도 좋을 거 같습니다.
JUnit 3, 4, 5, hamcrest를 AssertJ로 마이그레이션하기
이 부분은 사실 정리할 계획이 없었는데 AssertJ 공식 홈페이지 보다가 있길래 간단히 언급만하고 넘어가겠습니다.
1. https://joel-costigliola.github.io/assertj/assertj-core-converting-junit5-assertions-to-assertj.html 접속
(JUnit 3, 4를 하려면 https://joel-costigliola.github.io/assertj/assertj-core-converting-junit-assertions-to-assertj.html 접속)
2. convert-junit5-assertions-to-assertj-on-osx.sh 다운로드
3. 테스트 자바 파일이 있는 곳에 다운로드한 파일을 위치시킨 후 실행하면 AssertJ로 변환
JUnit 5에 대해 어느정도 정리가 끝난 거 같습니다.
추가로 JUnit 5에 대해 더 알게된 정보나 재밌는 정보있으면 다시 포스팅하겠습니다.
읽어주셔서 감사합니다.
댓글