스프링심화 테스트3주차

단위테스트 Junit5

given

when

then

테스트케이스 중 이제 오류가나면 그뒤로는 수행되지않는다

엣지 케이스

엣지 케이스란 알고리즘이 처리하는 데이터의 값이 알고리즘의 특성에 따른 일정한 범위를 넘을 경우에 발생하는 문제를 가리킨다.

예를 들면 fixnum이라는 변수의 값이 -128 ~ 127의 범위를 넘는 순간 문제가 발생하는 경우가 있을 수 있다. 어떤 분모가 0이 되는 상황처럼 데이터의 특정값에 대해 문제가 발생하는 경우도 마찬가지다.

엣지 케이스는 알고리즘의 특성에 따라 개발자가 면밀히 검토하여 예상할 수 있는 문제다. 이런 문제는 디버그가 쉽기도 하고 테스트를 통해 미리 방지하기도 쉽다.


public Product(ProductRequestDto requestDto, Long userId) {
        // 입력값 Validation
        if (userId == null || userId < 0) {
            throw new IllegalArgumentException("회원 Id 가 유효하지 않습니다.");
        }

        if (requestDto.getTitle() == null || requestDto.getTitle().isEmpty()) {
            throw new IllegalArgumentException("저장할 수 있는 상품명이 없습니다.");
        }

        if (!URLValidator.urlValidator(requestDto.getImage())) {
            throw new IllegalArgumentException("상품 이미지 URL 포맷이 맞지 않습니다.");
        }

        if (!URLValidator.urlValidator(requestDto.getLink())) {
            throw new IllegalArgumentException("상품 최저가 페이지 URL 포맷이 맞지 않습니다.");
        }

        if (requestDto.getLprice() <= 0) {
            throw new IllegalArgumentException("상품 최저가가 0 이하입니다.");
        }

        // 관심상품을 등록한 회원 Id 저장
        this.userId = userId;
        this.title = requestDto.getTitle();
        this.image = requestDto.getImage();
        this.link = requestDto.getLink();
        this.lprice = requestDto.getLprice();
        this.myprice = 0;
    }

이런경우 이렇게 예외를 발생시킴으로써 처리를하는것이다

util패키지는 유용한 클래스들을 많이 가지고 있는 패키지
model도아니고 dto도아니고 controller service 또 repository security도 아니면 이런 클래스 util 패키지에 넣어준다

URL과 URI차이

  1. URI 는 네트워크 상 자원을 가리키는 일종의 고유 식별자(ID) 이다.

  2. URL, URN 은 URI 에 포함되는 개념이며 URL 은 자원의 위치, URN 은 자원의 이름 을 의미한다.
    출처: https://programming119.tistory.com/194 [개발자 아저씨들 힘을모아]

assertEquals(expect, actual)
assertTrue()
assertFalse(isValid)

assertThrows 에러가나올것이다
assertThrows(IllegalArgumentException.class, ( -> {new Product(dto, userId)} 이부분 헷갈리지말기

when(productRepository.findById(productId))
.thenReturn(Optional.of(product));

좋은 웹페이지 즐겨찾기