JUnit 예제

윤준혁·2024년 5월 23일
post-thumbnail

Member 선언

@Getter
@Setter
public class Member {
    private String name;
    private String birth;
    private int height;
    private int weight;

    public Member(String name, String birth) {
        this.name = name;
        this.birth = birth;
    }
}

Annotation 동작 순서

코드

class MemberTest {
    @BeforeAll
    static void beforeAll() {
        System.out.println("beforeAll");
    }

    @AfterAll
    static void afterAll() {
        System.out.println("afterAll");
    }

    @Test
    @DisplayName("객체 생성 테스트")
    void createTest1() {
        System.out.println("create1");
    }

    @Test
    void createTest2() {
        System.out.println("create2");
    }

    @BeforeEach
    void beforeEach() {
        System.out.println("beforeEach");
    }

    @AfterEach
    void afterEach() {
        System.out.println("afterEach");
    }
}

실행 화면

asserttions

assertions란?

  • JDK 1.4부터 도입된 assert라는 예약어를 통해 사용할 수 있음
  • 기본 환경에서는 활성되지 않으며 기본 옵션을 부여해야 사용할 수 있음
  • Assertions는 단언문이라고 칭하며 false로 평가될 경우 AssertionError를 발생

    assert의 사전적 의미 : (사실임을 강하게)주장하다

상황 1(assert가 참)

  • assert가 참이면 조건문 실행 X

상황 2(assert가 거짓)

  • assert가 거짓인데 조건문이 실행되지 않음

  • VM options를 추가해줘야 함

  • -ea를 추가 (enable assertions의 약자)

  • 정상적으로 작동되는 모습

VM options

  • -ea : 전체 활성화
  • -ea:[class name or package name], -da:[classname or package name] : 지정 제외 활성화 및 비활성화

assertNotNull

  • Null이 반환되면 오류를 발생시키는 메소드
@Test
@DisplayName("객체 생성 테스트")
void createTest1() {
	Member member = new Member("Yoon", "1996.06.04");
    member = null;
    assertNotNull(member, "is not valid object");
    System.out.println("create1");
}

Supplier

  • assertNotNull과 결과 같음
@Test
@DisplayName("객체 생성 테스트")
void createTest1() {
	Member member = new Member("Yoon", "1996.06.04");
	member = null;
    assertNotNull(member, new Supplier<String>() {
    	@Override
        public String get() {
        	return "is not valid object";
        }
    });
    System.out.println("create1");
}

  • 동일한 작동
@Test
@DisplayName("객체 생성 테스트")
void createTest1() {
    Member member = new Member("Yoon", "1996.06.04");
    member = null;
    assertNotNull(member, () -> "is not valid object");
    System.out.println("create1");
}

assertEquals

  • 두 값이 같은지 비교
@Test
void createTest2() {
    int a = 1 * 4;
    assertEquals(4, a);
    System.out.println("create2");
}

assertThrows

  • 예외 처리시 반환
@Test
void createTest2() {
    assertThrows(IllegalAccessError.class, () -> new Member("Yoon", "1996"));
    System.out.println("create2");
}

대략적인 메소드나 예제만 설명한 글, 테스트 케이스는 각자에 맞춰 작성하는 방법을 아는게 제일 중요한듯함

0개의 댓글