영호
[JUnit] JUnit, Assertj 설정, 테스트코드 작성 본문
들어가며
- 프로젝트를 진행하다 보면 기능들이 점점 추가가 된다. 초반에는 사람이 수동으로 기능이 정상적으로 동작하는지 확인할 수 있다.
- 그러나 기능들이 점점 많아지다 보면 수동으로 확인하는 것은 불가능에 가까웠기 때문에, 테스트 코드는 필수적이다.
- 그래서 Java에서 주로 사용하는 테스트 프레임워크인 JUnit과 테스트 코드 작성을 도와주는 Assertj에 대해 알아볼 예정이다.
목차
- JUnit이란?
- AssertJ란?
- JUnit, Assertj를 이용한 테스트 코드 작성
JUnit이란?
- Java에서 지원하는 유닛 테스트 프레임워크이다. JUnit을 이용하여 수많은 기능들의 동작을 한 번에 테스트할 수 있게 해 준다.
- JUnit4부터 어노테이션을 지원한다.
Assertj란?
- JUnit만을 이용해 테스트 코드 작성이 가능하지만, Asserj를 같이 사용하면 보다 가독성이 좋은 테스트 코드 작성이 가능하다.
- method chaining을 지원하기 때문에 가독성이 좋다.
Assertions.assertThat(result).isEqualTo(4);
// Assertions.assertThat(테스트 할 객체).테스트method().method()
- 예외 상황 검증을 위해 assertThrows를 사용할 때도 있습니다.
- Java8 이상을 사용하는 프로젝트에서는 Assertj 3.x버전을 사용해야 한다.
- 아래 코드를 build.gradle의 dependencies에 추가한 뒤 gradle최신화를 해줍니다.
// Gradle
// Java8 이상
testCompile 'org.assertj:assertj-core:3.6.2'
// Java7 이하
testCompile 'org.assertj:assertj-core:2.6.0'
JUnit, AssertJ를 이용한 테스트 코드 작성
자바 소스코드 작성
// main/java/Calculator
public class Calculator {
int sum(int a, int b){
return a + b;
}
}
테스트 코드 파일 생성
- Calculator 클래스에 우클릭을 합니다.
- [Go To] 탭에서 Test클릭.
- 단축키로는 맥 기준 [command + shift + T]를 누르면 아래 사진에서 Test까지 클릭한 상태로 바로 가게 됩니다.Test 혹은 [command + shift + T]를 누르면 아래 사진과 같은 화면이 나옵니다.
- Create New Test를 눌러줍니다.아래 사진과 같이 Testing library를 JUnit5로 맞춰주시고 모듈을 찾을 수 없다고 나오면 [Fix]를 눌러줍니다.
- 설치가 끝나면 테스트 코드를 작성할 method, 여기선 sum()을 체크하고 [OK]를 눌러줍니다.위 과정을 모두 마치면 CalculatorTest파일이 생성됩니다.
테스트 코드 작성
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
class CalculatorTest {
@Test
void testSum() {
Calculator cal = new Calculator();
int result = cal.sum(1, 3);
Assertions.assertThat(result).isEqualTo(4);
}
}
- @Test 어노테이션으로 해당 method는 테스트용이라는 것을 알려줍니다.
- Assertj의 isEqualTo를 통해 값을 비교해보면 테스트가 통과합니다.
Assertions.assertThat(result).isEqualTo(5);
- 기대한 것은 5였지만 실제 result는 4가 나와 테스트에 실패하는 것을 볼 수 있습니다.
마무리
- 간단하게 JUnit과 AssertJ를 이용해 테스트 코드를 작성해봤습니다.
- JUnit의 어노테이션에는 @Test뿐만 아니라 BeforeEach, AfterEach, BeforeAll, AfterAll 등등 매우 다양하게 존재하기 때문에 구글링을 통해 적재적소에 맞는 어노테이션 사용이 필요합니다.
- 또한 Asserj 역시 다양한 method들이 존재하기 때문에 추후 method를 정리할 예정입니다.
'Test > JUnit' 카테고리의 다른 글
[Junit] 병렬 실행을 통해 빌드 시간 단축해보기 (0) | 2023.11.12 |
---|---|
[JUnit5] isSameAs, isEqualTo 차이 (0) | 2022.06.13 |
[JUnit] JUnit5 예외 테스트코드 작성(assertThrows) (0) | 2022.05.16 |
[JUnit] JUnit, Assertj 프로젝트 생성 with 인텔리제이 (0) | 2022.05.15 |
Comments