JUnit 5: 테스트 인스턴스 테스트 메소드마다 새로운 인스턴스를 만들어 실행한다. //테스트 인스턴스 int value = 1; @Test @DisplayName("스터디 만들기 테스트 인스턴") void testInstance() { System.out.println(this); System.out.println(value++); } @Test @DisplayName("스터디 만들기 테스트 인스턴스 ") void testInstance2() { System.out.println(this); System.out.println(value++); } value 값을 1로 선언 후 각 테스트 메소드에서 value를 증가하여 각각 2 또는 3 이 출력될 거 같지만 결과는 다르다. 둘 다 1이라는 결과가 나타..
JUnit 5 : 테스트 반복하기 2부 인자 값들의 소스 @ValueSource 파라미터를 나열한다. @NullSource, @EmptySource, @NullAndEmptySource 기존 파라미터에 Null 혹은 빈값의 파라미터를 추가할 수 있다. @EnumSource @MethodSource @CsvSource @CsvFileSource @ArgumentSource 인자 값 타입 변환 암묵적인 타입 변환 명시적인 타입 변환 @ValueSource로 선언한 파라미터(@ValueSource(ints {10, 20, 40}))를 객체의 생성자에 파라미터로 하여 객체를 생성한 후 객체로 접근하여 가져온 값들을 테스트에서 확인해보자. 즉, 커스텀한 타입으로 변환하여 파라미터를 받고자 할 땐, Converte..
JUnit : 테스트 반복하기 어떤 테스트에 대해서 반복적으로 테스트를 진행할 수 있다. @DisplayName("스터디 만들기") @RepeatedTest(value = 10, name = "{displayName}, {currentRepetitions}/{totalRepetitions}" ) void create_study(RepetitionInfo repetitionInfo) { System.out.println("test" + repetitionInfo.getCurrentRepetition() + "/" + repetitionInfo.getTotalRepetitions()); } {displayName} : @DisplayName {currentRepetitions} : 현재 반복한 횟수 {tot..
JUnit5 : 커스텀 태그 JUnit에서 제공하는 어노테이션들을 메타 어노테이션으로 사용할 수 있다. 즉, 사용자가 만든 어노테이션에 JUnit 어노테이션을 넣어 사용할 수 있다는 것이다. //사용자 정의 어노테이션 //FastTest @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Test @Tag("fast") public @interface FastTest { } //SlowTest @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Test @Tag("slow") public @interface FastTest { } @FastTest @DisplayName("스터..
JUnit 5 : 태깅과 필터링 각 테스트 그룹을 만들고, 원하는 테스트 그룹만 테스트를 진행할 수 있는 기능이다. 여러 조건으로 우리가 원하는 태그를 붙여 해당 태그를 지정하여 테스트를 진행할 수 있는 것이다. @Tag 테스트 메소드에 태그를 추가할 수 있다. 하나의 테스트 메소드에 여러 태그를 사용할 수 있다. 소스로 확인해보자 Fast 태그와 slow 태그를 사용하여 용도에 맞게 테스트를 진행해보자 즉, 실행결과가 빠르게 나타나는 테스트를 fast, 실행결과가 느리게 나타나는 테스트는 slow로 가정하자 @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) public class TagTest { @Test @DisplayNam..
조건에 따라 테스트 실행하기 Assumptions 특정한 OS, Java 버전, 환경변수에 따라 실행하거나 실행하지 말아야할 때 사용한다. 환경에 따라 테스트를 다르게 진행하자 메소드를 활용하자 assumeTrue 메소드 @Test @DisplayName("스터디 만들기") void create_new_method() { String test_env = System.getenv("TEST_ENV"); System.out.println(test_env); assumeTrue("LOCAL".equalsIgnoreCase(test_env)); } //LOCAL 환경 변수에서만 해당 테스트가 실행된다. assumingThat 메소드 @Test @DisplayName("스터디 만들기") void create_ne..
Assertion assertEquals() 사용 assertEquals(StudyStatus.DRAFT, study.getStatus(), "Study 생성 시 처음 값은 DRAFT여야 한다"); StudyStatus의 DRAFT값과 study.getStatus() 값이 일치하는지 확인 세번째 파라미터에 String을 입력하면 오류 시 메시지가 호출되어 해당 메소드가 어떤 테스트에 해당하는지를 정확히 알 수 있다. assertEquals()는 assertEquals(내가 기대하는 값, 실제 나오는 값, 오류시 나타내려는 메시지); 이다 메시지를 나타낼 때 Supplier를 사용 가능하다. assertEquals(StudyStatus.DRAFT, study.getStatus(), new Supplier(..
JUnit5 테스트 이름 표기하기 테스트를 실행하게 되면 Test Results에 @Test 메소드명이 찍히게 된다. 애노테이션을 활용하여 테스트 이름을 변경시킬 수가 있다. @DisplayNameGeneration @DisplayName @DisplayNameGeneration 클래스에 해당 애노테이션을 붙이면 @Test 메소드 이름에 _로 표시한 모든 부분은 space로 처리된다. @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) class StudyTest { } 클래스와 메소드에서 사용가능하다. @DisplayName @Test 메소드에 해당 애노테이션을 붙이면 사용자가 정의한 이름으로 테스트 이름을 표기할 수 있다. @T..
- Total
- Today
- Yesterday
- try catch finally
- 자바8
- 빌더 패턴
- 복사 팩토리
- 이펙티브 자바
- effectivejava
- 이펙티브자바
- ifPresent
- 연관관계
- package-private
- JPA
- Effective Java
- 점층적 생성 패턴
- flatMap
- try with resources
- 빈 순환 참조
- jdk버전
- java8
- @Lazy
- 정적팩터리메서드
- junit
- 팩토리 메소드 패턴
- springboot
- mustache
- Spring
- 생성자
- 김영한
- 인프런
- java
- 스프링부트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |