Assertion 정리

9931 단어 testtest

Assersions

assertEquals(1,2,3)
  1. 예상 결과값
  2. 검증이 필요한 파라미터
  3. 실패했을경우 출력해줄 메세지를 넣어주게됨. (String 타입 인자가 아니라 Supplier 타입이 들어가게됨.)
    @Test
    void create_test(){
        MemberDto memberDto = MemberDto.builder()
                .memberMstId("HelloWorld")
                .build();
        assertNotNull(memberDto);
        assertEquals("HelloWorld",memberDto.getMemberMstId(), ()-> "헬로 월드");
    }

람다식 기입을 하지 않은 경우 테스트가 실패 성공 여부와 관계없이 실행하지만 람다식 작성시 테스트가 실패했을 경우에만 연산을 하게됨

  • 문자열의 출력이 성능저하를 우려할정도의 사이즈라면 람다식을 작성해보자

asssertTrue(1,2)

  1. Boolean Type
  2. 실패했을 경우 출력할 메세지
    @Test
    void create_test(){
        MemberDto memberDto = MemberDto.builder()
                .memberMstId("HelloWorld")
                .build();
        assertTrue(ObjectUtils.isEmpty(memberDto), () -> "HelloWorld");
    }

assertAll

 @Test
    void create_test() {
        MemberDto memberDto = null;
        assertAll(
                () -> assertNotNull(memberDto,()->"테스트1"),
                () -> assertEquals("abc", memberDto, "테스트2"),
                () -> assertTrue(!ObjectUtils.isEmpty(memberDto), () -> "테스트3")
        );
    }

위와같은경우 memberDto 가 Null 일경우 테스트가 실패하게 된다 이경우 아래에 있는 로직에 대한 검증을 할수 없게됨 이에 아래 모든 테스트를 수행을 원할 경우 assertAll 을 사용한다.

위 결과를 출력할 경우

3개의 테스트가 정상 종료되었다.

AssertThrows(1,2)

  1. 익셉션 클래스 정의
  2. 테스트 실행 로직.
    @Test
    void create_test() {
        MemberDto memberDto = null;

        IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, MemberDto::new);
        assertEquals(exception.getMessage(),"에러 발생");
    }

AssertTimeOut(1,2)

  1. Duration Type 의 시간
  2. 테스트 실행 로직
	@Test
    void create_test() {
        MemberDto memberDto = null;

        assertTimeout(Duration.ofSeconds(10), ()-> new MemberDto());
    }

좋은 웹페이지 즐겨찾기