보통 Spring, 또는 Gradle이나 Maven으로 소스코드를 관리하는 일이 많다.
그리고 test가 자동으로 생성되는 경우를 볼 수 있는데 해당 패키지 내부에서 단위 테스팅을 진행 할 수 있다. 그리고 보통 자바에서 Assertion이라는 테스트 코드를 사용한다.
Assertion에서는 JUnit
또는 assertj
를 사용하게 되는데 주로 사용하는 코드를 정리해본다.
import static org.assertj.core.api.Assertions...;
import static org.junit.jupiter.api.Assertions...;
보통 import할 때 앞 부분을 생략하고 바로 사용하기 때문에 import static
을 사용하여 import 처리를 한다.
assertj 관련 assert를 사용할 경우, Assertions.assertThat()... 형식으로 사용이 가능하지만 해당 포스팅에서는 static import를 사용하므로 바로 assertThat으로 접근하여 사용한다.
assertThat(givenParam).isEqualTo(whenParam);
assertThat(givenParam).isNotEqualTo(whenParam);
어떠한 입력 값(given)을 특정한 메서드에 넣고 그 결과(when)가 같은지/다른지 확인하는 메서드
isEqualTo
의 경우 given 파라미터와 when 파라미터가 같아야 테스트 통과가 되며,
isNotEqualTo
의 경우 given 파라미터와 when 파라미터가 달라야 테스트 통과가 가능하다.
assertThat(givenParam).isSameAs(whenParam);
assertThat(givenParam).isNotSameAs(whenParam);
isEqualTo
와 같이 입력 값과 결과값이 같은지 확인하는 메서드이다. 하지만 두개의 차이점으로는
isEqualTo
의 경우, '결과 값'만 체크하나, isSameAs
의 경우 결과와 비교 대상 자체가 같은가 차이를 볼 수 있다. 즉, 같은 메모리 위치에 있어야 같다.
assertThat(givenParam).isNull();
assertThat(givenParam).isNotNull();
입력 값이 NULL/Not NULL 인지 확인한다.
assertThat(givenParam).isInstanceOf(CheckClass.class);
assertThat(givenParam).isNotInstanceOf(CheckClass.class);
입력 값이 주어졌을 때, 해당 입력 값의 객체가 확인할 객체가 맞는지 아닌지 확인
assertThrows(Exception.class,()->Run Exception Method);
//ex Spring Bean을 호출했으나 A 타입에 여러개의 Bean이 존재하는 상황
assertThrows(NoUniqueBeanDefinitionException.class,()->config.getBean(A.class));
assertThrows는 첫 번째 파라미터로 예상하는 예외상황.class, 두번째는 예외상황을 만들 메소드를 람다형식으로 넣으면 된다.
이 외에도 여러가지 메소드나 MVC, 데이터베이스 체크 등등... 상당히 많은 방법이 있으나 작성한 내용은 범용적으로 자주 사용된다고 생각해서 메모했다. 또 생각나는 것이 있으면 추가적으로 작성할 예정