JUnit로 단위 테스트

Java 테스트 소개

Maria Milusheva

Senior Software Engineer

단위 테스트 - 정의

두 가지 핵심 개념:

Unit - 메서드와 같은 애플리케이션의 가장 작은 테스트 단위

Unit testing - 애플리케이션의 다른 부분과 격리하여 단일 "단위"의 정확성을 검증하는 테스트

Java 테스트 소개

단위 테스트는 디테일에 초점

메모:

  • 단위 테스트는 큰 그림이 아닌 작은 로직에 초점을 둡니다

  • 다른 테스트 유형은 큰 그림에 초점을 둡니다(예: 통합)

  • JUnit의 주요 용도가 단위 테스트이므로 이런 이름이 붙었습니다

단위 테스트와 운영 코드의 관계를 직관적으로 보여주는 그래픽

Java 테스트 소개

테스트 유형 - 간단 개요

  • 이 강의에서는 주로 단위 및 통합 테스트를 다룹니다
  • 하지만 테스트 종류는 매우 다양합니다

단위 테스트 같은 기능 테스트와 사용성 테스트 같은 비기능 테스트를 포함한 소프트웨어 테스트 다이어그램

Java 테스트 소개

테스트 유형 - 간단 개요

  • 이 강의에서는 주로 단위 및 통합 테스트를 다룹니다
  • 하지만 테스트 종류는 매우 다양합니다

단위 테스트 같은 기능 테스트와 사용성 테스트 같은 비기능 테스트를 포함한 소프트웨어 테스트 다이어그램. 이 버전은 단위/통합 테스트에 동그라미 표시

Java 테스트 소개

JUnit 문법: assertTrue()와 assertFalse()

  • assertTrue()는 표현식이 true인지 확인합니다:
List<String> list = new ArrayList<>();

assertTrue(list.isEmpty()); // 오류 없음
  • assertFalse()는 반대를 확인합니다:
List<String> list = new ArrayList<>();
list.add("A");

assertFalse(list.isEmpty()); // 오류 없음
Java 테스트 소개

assertNull()과 assertNotNull()

null 변수는 NullPointerException을 유발할 수 있습니다!

  • 변수가 null인지 여부를 확인하는 단언: assertNull(), assertNotNull()

  • 흔한 사례: 외부에서 가져온 값이 null이 아님을 확인

Map<String, Integer> catalogue = new HashMap<>();

catalogue.put("item1", 10);

// 오류 없음
assertNotNull(catalogue.get("item1"));
assertNull(catalogue.get("item2"));
Java 테스트 소개

예외 단언

ArrayIndexOutOfBoundsException이 발생하는지 검증한다고 합시다:

public String getIndex(String[] array, int index) {
    return array[index];
}

JUnit은 이를 검증하는 여러 방법을 제공합니다!

Java 테스트 소개

assertInstanceOf()

  • JUnit은 assertThrows()를 제공합니다. 다만 고급 Java 문법(람다식)을 사용합니다

  • 대신 assertInstanceOf()를 이렇게 사용할 수 있습니다:

try {
    getIndex(new String[]{}, 4);
} catch (Exception e) {
    // 예외의 기대 클래스와 실제 예외를 전달
    assertInstanceOf(ArrayIndexOutOfBoundsException.class, e); 
}
1 https://www.baeldung.com/junit-assert-exception
Java 테스트 소개

단위 테스트 이름 짓기

  • 일반적인 프로젝트에는 수백 개의 단위 테스트가 있습니다

  • 가볍고 이해하기 쉬워야 합니다

  • 실패 시 무엇이 문제인지 한눈에 알 수 있도록 이름이 명확해야 합니다

예: methodUnderTest_expectedBehavior_conditions()

1 https://dzone.com/articles/7-popular-unit-test-naming?fromrel=true
Java 테스트 소개

연습해 봅시다!

Java 테스트 소개

Preparing Video For Download...