JUnit과 Mockito 기반 Spring 단위 테스트 코드 : https://mangkyu.tistory.com/145
Mock 개념 : https://www.crocus.co.kr/1555
Java 기반 Mock 사용하기(Mockito) : https://www.crocus.co.kr/1556
JUnit에서 Private 변수 접근하여 테스트 : https://www.crocus.co.kr/1665
JUnit에서 System.out.println 출력 내용 테스트 : https://eblo.tistory.com/123 
Intellij IDEA에서 Junit 사용하기 : https://ildann.tistory.com/5

 

 

 

 

 

Posted by 꿈만은공돌
,

 

 단위테스트(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) : 유닛 테스트란 단일 동작을 검증하는 단위테스트다. 하지만 단일 동작으로 여러 결과를 낼 수 있기 때문에 코드가 길어 질 수 있다.

 

 

 

 

Posted by 꿈만은공돌
,