2024.03.20

김무영·2024년 3월 25일

JUNIT

  • Java 언어에서 사용할 수 있는 UNIT 테스트 프레임워크.

  • 테스트의 결과는 Test 클래스로 개발자에게 테스트 방법 및 클래스의 History를 공 유.

    • assert method로 테스트 케이스의 수행 결과를 판별.
    • annotation을 지원 ( 간단하게 테스트를 수행할 수 있다. )
  • 단위 테스트 (UNIT Test)

    • 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위 테스트.
    • 프로그래밍 시에 모든 method에 대한 Test Case를 작성하여 의도된 대로 잘 동작 하는지 검증 하는 절차.
    • System.out.println으로하는 번거로운 디버깅이 필요없으므로 디버깅 시간을 단축시킬 수 있다.
    • 하나의 기능의 결과 값이 올바르게 도출되는지 수행하는 테스트.
  • 통합테스트(Integration Test)

    • 모듈을 통합하는 과정에 모듈간의 호환성을 확인하기 위해 수행하는 테스트
    • 애플리케이션은 여러 모듈로 구성되고, 모듈끼리 메시지를 주고받으며 method를 호출하는 기능을 수행한다.
    • 모듈들이 올바르게 연계되어 동작하는 지 검증이 필요할때 사용하는테스트.
  • 단위테스트 장점

    • 통합테스트는 시스템을 구성하는 컴포넌트들이 많아 질수록 수행 시간이 오래걸린 다.
    • 단위테스트는 해당 부분만 독립적으로 수행하기때문에 테스트 시간이 줄고 문제의
      원인을 빠르게 찾을 수 있다.
    • 단위테스트를 선호 ( TDD (Test-Driven Development) )

FIRST 규칙

  • Fast : 테스트는 빠르게 동작하고, 자주 할 수 있어야 한다.
  • Independent : 각각의 테스트는 독립적이어야 한다.
  • Repeatable : 반복 가능해야 한다.
  • Self - Validation : 테스트 성공 / 실패를 boolean으로 반환하여 자체 검증 가능.
  • Timely : 테스트 적시에 해야한다.
  • assert method
    • assertArrayEquals( a , b ) : a와 b 배열이 일치하는지 확인.
    • assertEquals( a , b ) : 객체 a와 b가 같은 값을 가지는지 확인.
    • assertNotEquals( a , b ) : 객체 a와 b가 다른 값을 가지는지 확인.
    • assertEquals( a, b, c ) : 객체 a와 b가 오차내에서 같은 값을 가지는지 확인.
      • a:예상 , b:결과, c:오차범위
    • assertSame( a , b ) : 객체 a와 객체 b가 같은 객체인지 확인.
    • assertTrue( a ) : 조건 a가 참인지 확인.
    • assertNotNull( a ) : 객체 a가 null이 아닌 지 확인
    • assertThrows( 예외처리클래스.class, () -> 예외 발생예상코드 );
    • assertDoesNotThrows( () -> 예외 발생예상코드) : 예외가 아닐 때
  • 기본 annotation
    • @Test : 테스트를 만드는 모듈
    • @DisplayName : 테스트클래스 또는 테스트 method에 설정하는 이름
    • @ExtendsWith : 사용자가 정의한 소스만 테스트 할 때
    • @BeforeEach : 각 테스트 method가 실행되기전 호출될 method - 여러번 호출
    • @AfterEach : 각 테스트는 method가 호출 된 후 호출될 method - 여러번 호출
    • @Disable : 테스트 클래스 또는 method를 비활성화
  • Test Case 작성
    @DisplayName("보기좋은 이름");
    @Test
    void method명(){
    	given-when-then-pattern : 1개의 단위 테스트를 3단계로 나눠서 작성하는 pattern
      given (준비) : 어떤 데이터를 준비
      when (실행) : 어떤 method를 실행하면
      then (검증) : 어떤 결과가 나와야한다.
    }

0개의 댓글