이전 포스팅으로 만든 프로젝트로 TDD 를 살짝 맛보기를 해보겠습니다.
src/test/java 의 기본 패키지에 NumericTest 클래스를 생성합니다.
(테스트 소스 폴더)
NumericTest.java
처음 생성된 클래스는 역시 비어있습니다.
우리의 TODO 는 다음과 같습니다.
위의 내용을 처리하기 위해 다음과 같은 테스트 코드를 작성합니다.
NumericTest.java
위의 코드는 Numeric 이라는 클래스가 없으므로 컴파일 오류가 나게됩니다.
오류를 해결하기 위해 원래 생성하려고 했던 Numeric 클래스를 src/main/java 폴더에 생성합니다.
Numeric.java
NumericTest 클래스의 남은 오류를 제거하기 위해서는 isNumber 메소드를 구현하여야 합니다.
Numeric.java
이제는 테스트 코드에 오류도 없고 테스트를 돌려봅니다.
실패를 없앨 수 있는 가장 빠른 수정방법을 선택합니다.
Numeric.java
이걸로는 테스트를 끝냈다고 볼 수 없겠죠. 숫자가 아닌 것을 넣어서 확인을 해보겠습니다.
NumericTest.java
당연한 결과이지만 테스트 실패가 발생하였습니다.
우리의 목적은 JUnit 의 녹색바이기 때문에 Numeric 의 isNumber 메소드를 수정합니다.
Numeric.java
테스트가 성공하였습니다.
이대로 끝날 줄 알았으나 할일이 추가되었습니다.
ㅁ 문자열이 숫자인지 확인
ㅁ 입력 파라미터가 null 이면 숫자가 아님
ㅁ 소수점도 숫자임
위의 두 조건을 테스트 하기 위해 테스트 코드에 검증 조건을 추가합니다.
NumericTest.java
원래의 방식이라면 하나씩 해결하겠지만... 포스팅이 길어지는 관계로 한방에 처리하겠습니다.
Numeric.java
해결하다보니 또 하나의 TODO 가 추가되었습니다.
ㅁ 문자열이 숫자인지 확인
ㅁ 입력 파라미터가 null 이면 숫자가 아님
ㅁ 소수점도 숫자임
ㅁ 음수도 숫자
테스트 코드에 검증 조건을 추가합니다.
NumericTest.java
테스트를 성공하기 위해 수정작업을 진행합니다.
Numeric.java
모든 테스트를 통과한 녹색바를 확인하였습니다.
(테스트 소스 폴더)
NumericTest.java
처음 생성된 클래스는 역시 비어있습니다.
우리의 TODO 는 다음과 같습니다.
ㅁ 문자열이 숫자인지 확인
위의 내용을 처리하기 위해 다음과 같은 테스트 코드를 작성합니다.
NumericTest.java
위의 코드는 Numeric 이라는 클래스가 없으므로 컴파일 오류가 나게됩니다.
오류를 해결하기 위해 원래 생성하려고 했던 Numeric 클래스를 src/main/java 폴더에 생성합니다.
Numeric.java
NumericTest 클래스의 남은 오류를 제거하기 위해서는 isNumber 메소드를 구현하여야 합니다.
Numeric.java
이제는 테스트 코드에 오류도 없고 테스트를 돌려봅니다.
실패를 없앨 수 있는 가장 빠른 수정방법을 선택합니다.
Numeric.java
이걸로는 테스트를 끝냈다고 볼 수 없겠죠. 숫자가 아닌 것을 넣어서 확인을 해보겠습니다.
NumericTest.java
당연한 결과이지만 테스트 실패가 발생하였습니다.
우리의 목적은 JUnit 의 녹색바이기 때문에 Numeric 의 isNumber 메소드를 수정합니다.
Numeric.java
테스트가 성공하였습니다.
이대로 끝날 줄 알았으나 할일이 추가되었습니다.
ㅁ 입력 파라미터가 null 이면 숫자가 아님
ㅁ 소수점도 숫자임
위의 두 조건을 테스트 하기 위해 테스트 코드에 검증 조건을 추가합니다.
NumericTest.java
원래의 방식이라면 하나씩 해결하겠지만... 포스팅이 길어지는 관계로 한방에 처리하겠습니다.
Numeric.java
해결하다보니 또 하나의 TODO 가 추가되었습니다.
ㅁ 입력 파라미터가 null 이면 숫자가 아님
ㅁ 소수점도 숫자임
ㅁ 음수도 숫자
테스트 코드에 검증 조건을 추가합니다.
NumericTest.java
테스트를 성공하기 위해 수정작업을 진행합니다.
Numeric.java
모든 테스트를 통과한 녹색바를 확인하였습니다.
테스트 코드를 작성하게 되면 실제 사용하는 클래스의 메소드가 변경되었더라도 기존의 테스트를 통과하여야지만
다음으로 진행할 수 있기 때문에 신뢰성을 보장할 수 있습니다.
사람이 일일히 수작업으로 확인하는 과정을 다음과 같은 테스트 코드를 통해서 손쉽게 처리할 수 있습니다.
실제 프로젝트에서 이런 방식으로 개발하는 날이 언제쯤 올까요...