3.8.1 Test - Unit

yeonseong Jo·2023년 7월 10일
0

SEB_BE_45

목록 보기
41/47
post-thumbnail

첫 기술 면접을 본 회사에서
과제전형 때 꼭 테스트 코드를 짜서 제출하라고 했었는데,
그때까지만 해도 테스트 코드의 중요성을
생각해 본 적 없었고, 짜본적도 없었다.

기술 면접땐 면접관이 왜 테스트 코드를 짜서
제출하라고 했는지 알겠냐고
회사의 의도를 나한테 물어봤었는데,

나는 테스트 코드를 작성함으로써 오류를 미연에 방지하는 등의 기본적인 답변과

면접자가 자신이 짠 코드에 대해
코드의 흐름을 얼마나 잘 파악하고 있는 지를 알고자
제출을 요청한 것일거 같다고 했다.

지금 생각해도 마지막 답변은 꽤 괜찮다고 생각하는데 떨어졌기에...

뭐 여튼
Spring의 MVC는 어느정도 다 배우고
이제 test를 학습하게 되었다


Unit Test

Unit test는 단위 테스트로
메서드 레벨로 테스트를 진행하는것이다.

일반적으로 단위 테스트는
최대한 독립적인 것이 좋고,
최대한 작은 단위인 것이 좋다고 한다.

독립적이고 작아질 수록 다른 기능은 생각할 필요가 없어
테스트 코드 짜는게 단순하고 빨라지기 때문

FIRST 원칙

단위 테스트 케이스를 작성하기 위해
FIRST원칙을 참고하면 좋다.

  • Fast 빠르게
  • Independent 독립적으로
  • Repeatable 반복이 가능하도록
  • Self-validating 자체 검증이 되도록
  • Timely 시기적절하게

BDD에 기반한 테스트 케이스 작성

테스트 케이스를 작성할 때
given when then으로 나누어
BDD 형식으로 케이스를 작성할 수 있다.

  • given

    테스트를 위한 중비과정
    테스트 대상에 전달되는 입력 값

  • when

    테스트할 대상을 지정

  • then

    테스트 결과 검증

Junit

보통 단위 테스트를 진행할 때
Junit을 많이 사용한다고 한다
가장 간단한거 같다.

...
import static org.junit.jupiter.api.Assertions.assertTrue;

public class Test {
	@BeforeAll
    public void beforeAll(){
    	...
    }
	@BeforeEach
    public void beforeEach(){
    	...
    }
    @DisplayName("Case 1")
    public void case1() {
    	// given
        ...
        // when
        ...
        // then
    	assertTrue(A==B);
    }
    
    
}

Before/After

Before~ After~ annotation을 사용해
테스트 케이스의 실행 전후 상황이나 조건 등을
설정할 수 있다.

~All의 경우 첫 테스트 케이스가 실행 되기 전이나
마지막 테스트 케이스가 실해된 후 '한 번만' 실행 되며

~Each의 경우 각 테스트 케이스가 실행 되기 전이나
후에 '매 번' 실행된다.

Asert

assert~ 메서드를 통해
then 테스트 결과를 검증할 수 있다.

profile
뒤(back)끝(end)있는 개발자

0개의 댓글