본문 바로가기
카테고리 없음

JUnit 테스트의 구조

by 잉ㅈI 2023. 10. 13.

JUnit 테스트의 구조 → AAA 패턴

 

이는 Arrange(준비), Act(실행), Assert(단언)의 약자로, 각 단계에서 수행되는 작업을 의미

💡 Intellij 테스트 단축키 (클래스에서) cmd + Shift + T

테스트 하기 전!

  • 어떤 테스트 코드가 다른 테스트에 영향을 주는 것을 최소화
  •  테스트 클래스에서 static 필드를 피하자!
  •  테스트 메서드에서 시험하는 시나리오를 정확하게 요약해서 설정

@Test

  • 해당 메소드가 단위 테스트임을 명시하는 어노테이션
  • 테스트 패키지 하위의 `@Test` 어노테이션이 붙은 메소드를 단위 테스트로 인식하여 실행
  • 테스트 이름이 함수 이름이 default로 지정됨

@DisplayName

  • 읽기 좋은 다른 이름을 부여 가능
  • 코드 예시
@Test
@Displayname("두 값의 산술 평균 검사")
public void answersArithmeticMeanOfTwoNumbers() {
...
}

 

 

1. Arrange - 준비

테스트 상태를 설정하는 준비 단계

  • 테스트를 수행하기 위해 초기 상태를 설정
  • 필요한 객체를 생성하고, 의존성을 주입하고, 데이터를 준비하는 등의 작업을 수행

2. Act - 실행

테스트를 준비한 후에는 검증하려는 코드 실행

  • 정확히 어떤 동작을 검증하기 위해 특정 메서드나 기능을 호출

3. Assert - 단언

기대하는 결과를 단언

  •  코드 예시
@Test
public void answersArithmeticMeanOfTwoNumbers() {
	//준비
	ScoreCollection collection = new ScoreCollection();
	collection.add(()->5);
	collection.add(()->7);
    
    //실행  
    int actualResult = collection.arithmeticMean();  

    //단언  
    Assertions.assertEquals(6,actualResult);  
}

 

Assertions 키워드를 작성하시 자동완성 기능으로 두 가지 추천해준다.

1) `org.junit.jupiter.api.Assertions` - junit

2) `org.assertj.core.api.Assertions` - assertj



💡 Assertions → Add on-demand static import Alt + Enter (단축키 팁!)

* JUnit과 AssertJ 값 비교 메서드

AssertJ를 더 많이 쓰지만 그래도 알아두자!

a: 예상 값, b: 실제 값

// JUnit
assertEquals(a, b);

// AssertJ
assertThat(a).isEqualTo(b);