본문 바로가기
Java

[Java] JUnit 5 사용법 (12) - AssertJ ( + vs Hamcrest, 마이그레이션)

by 노력남자 2022. 9. 6.
반응형

이번 포스팅에선 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을 참고 부탁드립니다.)

 

 

[Spring Boot] JUnit 5 (10) - Hamcrest

이번 포스팅에선 이전 포스팅에 설명했던 assertions, assumptions 를 좀 더 가독성있고 편하게 쓸 수 있도록 도와주는 라이브러리 hamcrest를 소개합니다. Hamcrest JUnit 4 라이브러리에 포함되어 있었는데

effortguy.tistory.com

 

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에 대해 더 알게된 정보나 재밌는 정보있으면 다시 포스팅하겠습니다.

 

읽어주셔서 감사합니다.

반응형

댓글