인프런 커뮤니티 질문&답변

최찬혁님의 프로필 이미지
최찬혁

작성한 질문수

Practical Testing: 실용적인 테스트 가이드

테스트 케이스 세분화하기

섹션 2의 단위테스트 세분화하기에서요 !

작성

·

451

0

    public void add(Beverage beverage, int count) {
        if (count <= 0){
            throw new IllegalArgumentException("음료는 1잔 이상 주문하실 수 있습니다.");
        }

        for (int i = 0; i < count; i ++) {
            beverages.add(beverage);
        }
    }

// 위 코드랑 아래 테스트에 대해서 이해가 안되서요 !
    @Test
    void add() {
        CafeKiosk cafeKiosk = new CafeKiosk();
        Beverage latte = new Latte();

        cafeKiosk.add(latte);

        int expectedSize = 1;
        int actuallySize = cafeKiosk.getBeverages().size();

        String expectedName = "라떼";
        String actuallyName = cafeKiosk.getBeverages().get(0).getName();

        Assertions.assertThat(actuallySize).isEqualTo(expectedSize);
        Assertions.assertThat(actuallyName).isEqualTo(expectedName);
    }

    @Test
    void addSeveralBeverages() {
        CafeKiosk cafeKiosk = new CafeKiosk();
        Beverage latte = new Latte();

        cafeKiosk.add(latte, 2);

        Assertions.assertThat(cafeKiosk.getBeverages().get(0)).isEqualTo(latte);
        Assertions.assertThat(cafeKiosk.getBeverages().get(1)).isEqualTo(latte);
    }

저렇게 add()에 count를 넣어버리면 add()테스트에서 cafeKiosk.add(latte, 1)으로 수정하던지
해야 에러가 안나는 거 아닌가요? 강의에서는 그냥 진행하셔서 여쭤봅니다!

답변 1

1

박우빈님의 프로필 이미지
박우빈
지식공유자

안녕하세요, 최찬혁님! :)

현재까지 진행한 코드를 보시면 아시겠지만, CafeKiosk의 add() 메서드 시그니처는 다음과 같이 2개가 있는 상황입니다.

public void add(Beverage beverage);

public void add(Beverage beverage, int count);

첫 번째 add() 테스트에서는 위쪽 메서드를 테스트했고, 두 번째 addSeveralBeverages()는 아래쪽 메서드를 테스트한 것이죠. ㅎㅎ

감사합니다. :)

최찬혁님의 프로필 이미지
최찬혁

작성한 질문수

질문하기