티스토리 뷰

테스트

테스트 주도 개발_1

Hilu 2023. 2. 5. 15:54

TDD 개발 방법론 학습을 위한 포스팅이다.

 

켄트백 저자의 테스트 주도 개발 내용을 참고하여 작성 할 것이며, 해당 내용은 1장 다중 통화를 지원하는 Money 객체, 2장 타락한 객체, 3장 모두를 위한 평등에 대한 실습 내용을 주로 담을 것이다.

 

1장 다중 통화를 지원하는 Money 객체

 

새로운 보고서 작성을 위한 환율 개선 요구 사항

1. $5 + 10CHF = $10(환율이 2:1일 경우)
2. $5 X 2 = $10

작업이 끝나면 취소선 표시 하도록 한다.

 

1. 테스트 코드 부터 작성

package com.example.demo;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import static org.junit.jupiter.api.Assertions.assertEquals;

@SpringBootTest
public class MoneyTest {

    @Test
    public void testMultiplication() {
        Dollar five = new Dollar(5);
        five.times(2);
        assertEquals(10, five.amount);
    }
}

 

여기서 우리가 추가적으로 고려해야 할 사항은 amount 가 public 으로 바로 접근이 가능하여 이슈가 생길 수 있고, Dollar 가 생성 되었을 때의 사이드 이펙트, 금액을 계산하는데 정수형를 사용 한다 등 문제가 있다. 이런 문제는 아까 요구 사항 리스트에 적어 둔다.

1. $5 + 10CHF = $10(환율이 2:1일 경우)
2. $5 X 2 = $10
3. amount를 private으로 만들기
4. Dollar 부작용?
5. Money 반올림?

이제 해당 내용에서 하나씩 해결해 보자, Dollar class 가 없으니 Dollar class 생성 및 초기화 가능 하도록 하자

 

package com.example.demo;

public class Dollar {

    private int amount;

    Dollar(int amount) {
        this.amount = amount;
    }

    public void times(int multiplier) {
        this.amount *= multiplier;
    }

    public int getAmount() {
        return this.amount;
    }
}

Dollar 개발 후 테스트 코드를 돌리면 PASS

package com.example.demo;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import static org.junit.jupiter.api.Assertions.assertEquals;

@SpringBootTest
public class MoneyTest {

    @Test
    public void testMultiplication() {
        Dollar five = new Dollar(5);
        five.times(2);
        assertEquals(10, five.getAmount());
    }
}

 

참고 : 테스트 주도 개발 (켄트 백)

'테스트' 카테고리의 다른 글

테스트 주도개발_3  (0) 2023.02.12
테스트 주도개발_2  (0) 2023.02.11
TDD 훈련을 위한 주제 정하기  (0) 2023.02.05
BDD  (0) 2019.02.26
TTD란?  (0) 2019.02.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함