[Junit in Action] Junit

Welcome to Seoyun Dev Log·2023년 1월 4일
0

테스트코드

목록 보기
6/7

1장: Junit

  • 인수테스트
  • 테스트는 간단한 패턴을 존재함을 알 수 있고, 자동으로 테스트 해주는 프로그램을 만들 수 있다.
  • 테스트 자동화

1.1

  • 컴포넌트: 프로그래밍에 있어 재사용이 가능한 각각의 독립된 모듈

  • 단위테스트 프레임워크 -> junit
    : 명확한 작업의 한 단위의 동작을 검사하는 테스트
    ⭐️ 메서드가 기대 범위의 입력을 받아, 각 입력에 대해 기대한 값을 반환하는지 확인하라

  • 단위테스트의 모토:
    프로그램에서 자동화된 테스트를 거치지 않은 기능은 존재하지 않는다

  • 프레임워크: 거의 완성된 애플리케이션으로 여러 애플리케이션에서 공유할 수 있는 재활용 가능하고 보편적인 구조를 제공한다
    개발자들은 이 프레임워크를 자신의 애플리케이션에 통합하고, 특정 요구사항에 부합하도록 기능을 확장할 수 있다. 응집성 높은 구조를 제공한다는 점에서 단순 유틸리티 클래스의 집합인 툴킷과 구분된다

  • 단위테스트, 통합테스트, 인수테스트

  • API 계약: 애플리케이션 프로그래밍 인터페이스(API)를 호출자와 피호출자간의 공식 합의로 바라보는 관점

1.2

  • 프로그램 기능 검증

    • 자동 기능 테스트
    • 자동 인수 테스트
  • 올바른 결과를 반환하는지를 알고 싶을 뿐 프로그래머가 숫자를 정확히 타이핑하는지는 관심밖이다.
    애플리케이션이 완성되어 배포될 때 혹은 어딘가 수정이 발생할 때마다 여전히 잘 동작하는가?

  • 테스트 프로그램의 추가 확장도 용이해지도록 구조를 모듈화

  • 메인 메서드의 경우 오류 발생시 스택 추적 정보 출력

  • ⭐️단위테스트 규칙 3가지

    • 단위 테스트는 다른 모든 단위 테스트들과 독립적으로 실행되어야한다
    • 프레임워크는 테스트 각각의 오루를 식별하고 보고해야한다
    • 어떤 테스트를 실행할지 선택하기 쉬워야한다
  • 클래스 로더 인스턴스

  • 리플렉션, 인트로스펙션

  • junit은 이미 인트로스펙션 방식을 제공

  • 텍스트 기반 테스트 러너

1.6

  • 자원 초기화와 회수를 위한 어노테이션: @After, @Afterclass, @Before, @BeforeClass
  • 테스트 결과 확인을 위한 메서드: assert

junit

  1. 가장 먼저 테스트 클래스를 정의
    : 반드시 public이어야 한다는 제약을 지킨다면 어떤 이름도 상관없고, 일반적으로 Test로 끝나는 이름 사용

  2. @Test 어노테이션 선언
    : 권장하는 테스트 메서드명??

  3. 테스트 대상 객체 생성
    테스트 대상 메서드 호출

  4. assertEquals로 결과 비교

2장

  • 테스트 클래스
  • 테스트 스위트
  • 테스트 러너

2.1

  • junit의 핵심

    • 테스트 클래스 조건
    • 기본 생성자가 있어야하는데 자바가 자동으로 만들어주는 기본 생성자로 사용
    • public 클래스
  • 테스트 메서드의 조건

    • @Test 어노테이션
    • public
    • 파라미터를 받으면 안된다
    • 반환형은 void

junit은 테스트 메서드를 실행할 때마다 테스트 클래스의 인스턴스를 새로 생성한다
이유는 부작용 방지를 위해

  • Assert클래스에 정의된 assert 메서드 사용
profile
하루 일지 보단 행동 고찰 과정에 대한 개발 블로그

0개의 댓글