Written by
Poogle
on
on
2021.08.23 TIL
새롭게 배운 것 Done
운동
독서
알고리즘
코딩
JUnit
- 매 단위 테스트시마다 테스트 클래스의 인스턴스가 생성되어 독립적인 테스트가 가능
- 애노테이션을 제공해서 테스트 라이프 사이클을 관리하게 해주고 테스트 코드를 간결하게 작성하도록 지원
- 테스트 러너를 제공해서 인텔리제이 / 이클립스 / 메이븐 등에서 테스트 코드를 쉽게 실행
- assert 로 테스트 케이스의 수행 결과를 판별 → assertEquals(예상 값, 실제 값)
JUnit 5 구성
- Jar가 3개
- JUnit 플랫폼: 테스팅 프레임워크를 구동하기 위한 런처와 테스트 엔진을 위한 API 제공
- JUnit 주피터(Jupiter): JUnit 5를 위한 테스트 API와 실행 엔진 제공
-
JUnit 빈티지(Vintage): JUnit 3와 4로 작성된 테스트를 JUnit 5 플랫폼에서 실행하기 위한 모듈 제공
- -> JUnit 5는 테스트를 위한 API로 주피터 API 제공, 주피터 API를 사용해서 테스트를 작성하고 실행하려면 주피터 관련 모듈을 의존에 추가하기
junit-jupiter-api
junit-jupiter-params
junit-jupiter-engine
- maven은 maven-surefile-plugin 2.22.0 버전부터 JUnit 5 플랫폼 지원
Hamcrest 실습
package com.programmers.java.tdd.lms;
import org.junit.Test;
import org.junit.jupiter.api.DisplayName;
import java.util.List;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class HamcrestAssertionTests {
@Test
@DisplayName("여러 hamcrest matcher 테스트")
public void hamcrestTest() {
assertEquals(2, 1 + 1);
assertThat(1 + 1, is(2));
assertThat(1 + 1, anyOf(is(1), is(2))); //1이나 2가 둘다 될 수 있을 때
}
@Test
@DisplayName("컬렉션에 대한 matcher 테스트")
public void hamcrestListMatcherTest() {
var prices = List.of(2, 3, 4);
assertThat(prices, hasSize(3));
assertThat(prices, everyItem(greaterThan(1)));
assertThat(prices, containsInAnyOrder(3, 4, 2));
assertThat(prices, hasItem(greaterThanOrEqualTo(2)));
}
}
모의 객체
- Mock: 행위 검증을 사용 - 메서드의 리턴 값으로 판단할 수 없는 경우 특정 동작을 수행하는지 확인
- Stub: 상태 검증을 사용 - 메서드가 수행된 후, 객체의 상태를 확인하여 올바르게 동작했는지를 확인
참고
깨달은 점 FEELING
- 생각보다 Hamcrest에 다양한 메서드들이 있다는 걸 깨달았다.
- 통합테스트 처음 경험해보기! 쉽지않다.😂