단위테스트(Unit Test)를 작성하는데 AAA 패턴을 이용해서 작성하면 단순하고 균일한 구조를 갖는데 도움을 주며 가독성 또한 좋아진다.
AAA패턴이란 준비(arrange), 실행(act), 검증(assert) 세 단계로 Test를 작성하는 패턴을 의미한다.
- 준비(arrange) : 테스트에 필요한 변수나 객체를 생성한다. 필요에 따라 mock 객체를 만든다.
- 실행(act) : 테스트 할 코드를 실행해 본다.
- 검증(assert) : 실행한 코드가 설계한대로 정확하게 동작했는지를 검증해본다. Unit Test의 Api인 assertEqals() 등의 코드를 사용하여 검증한다.
비슷한 패턴으로 Given-When-Then 패턴이 존재 한다.
아래 코드는 AAA패턴을 이용해서 Test 코드를 작성한 것이다.
import static org.junit.Assert.*;
import org.junit.Test;
public class MyMathTest {
@Test
public void mul_of_two_numbers() {
// arrange
MyMath math = new MyMath();
int first = 5;
int second = 30;
// act
int result = math.mul(first, second);
// assert
assertEquals(150, result);
}
}
각 단계마다 코드의 길이에 대한 설명이다.
- 준비(arrange) : 필요한 객체를 생성하고 필요한 변수들을 셋팅하는 과정이기 실행이나 검증 단계보다 코드가 길어질 수 있다. 준비 단계 코드가 너무 길어지고 다른 테스트와의 유사성이 있다면 중복된 부분을 private 함수를 이용해서 리팩토링하는 것도 좋은 방법이다.
- 실행(act) : 보통 한줄의 코드이다. 실행 구절이 두줄 이상이라면 잘못 설계된 API일 가능성이 높다.
- 검증(assert) : 유닛 테스트란 단일 동작을 검증하는 단위테스트다. 하지만 단일 동작으로 여러 결과를 낼 수 있기 때문에 코드가 길어 질 수 있다.
'JAVA > Junit' 카테고리의 다른 글
JUnit 개발에 필요한 유용한 사이트 모음 (1) | 2022.10.08 |
---|---|
Eclipse 에서 Junit을 이용한 JAVA Code를 유닛테스트(unit test) (2) | 2022.05.08 |