프로덕션 코드를 구현할 StringCalculator 클래스와 테스트 코드를 구현할 StringCalculatorTest 클래스를 생성한다. 테스트 클래스 이름은 프로덕션 클래스 이름에 Test 접미사를 붙이는 것이 관례이다. 프로덕션 코드와 테스트 코드를 구현하기 위해 클래스를 분리할 뿐만 아니라 최초 소스코드를 관리하는 디렉토리까지 분리한다.
StringCalculator 클래스는 다음과 같은 메서드 구조를 가질 것이다.
public class StringCalculator{
int add(String text) {
return 0;
}
}
이 실습을 진행해보면 각 요구사항 별로 다른 메서드를 생성해 구현하는 경우를 종종 본다. 프로덕션 클래스의 메서드를 여러 개 생성하는 것이 아니라 하나(위 예의 경우 StringCalculator 클래스의 add() 메서드)에서 문자열 계산기의 모든 요구사항을 구현해야 한다. 여러 개의 메서드를 추가해야 하는 부분은 테스트 구현을 담당하는 StringCalculatorTest 클래스에 각 테스트 단위별로 테스트 메서드를 만들어 구현한다.
위 요구사항을 테스트할 수 있는 더 작은 단위로 나눌 수 있다. 각 테스트 단위(테스트 케이스, Test Case라고 함) 별로 힌트도 제공하고 있으니 자바 API 사용에 익숙하지 않으면 참고하여 구현한다.
· 빈 문자열 또는 null 값을 입력할 경우 0을 반환해야 한다. (예 "" => 0, null => 0)
HINT)
if (test == null) {}
if (text.isEmpty()) {}
· 숫자 하나를 문자열로 입력할 경우 해당 숫자를 반환한다. (예 "1" => 1)
HINT)
int number = Integer.parseInt(text);
· 숫자 두 개를 쉼표(,) 구분자로 입력할 경우 두 숫자의 합을 반환한다. (예 "1,2" => 3)
HINT)
String[] numbers = text.split(",");
· 구분자를 쉼표(,) 이외에 콜론(:)을 사용할 수 있다. (예 "1,2:3" => 6)
HINT)
String[] tokens = text.split(",|:");
· "//"와 "\n" 문자 사이에 커스텀 구분자를 지정할 수 있다. (예 "//;\n1;2;3" => 6)
HINT)
Matcher m = Pattern.compile("//(.)\n(.*)").matcher(text);
if (m.find()) {
String customDelimeter = m.group(1);
String[] tokens = m.group(2).split(customDelimeter);
}
· 문자열 계산기에 음수를 전달하는 경우 RuntimeException 예외 처리를 한다.
HINT)
구글에서 "junit4 expected exception" 으로 검색해 해결책을 찾는다.
참고도서 : https://roadbook.co.kr/169
[신간안내] 자바 웹 프로그래밍 Next Step
● 저자: 박재성 ● 페이지: 480 ● 판형: 사륙배변형(172*225) ● 도수: 1도 ● 정가: 30,000원 ● 발행일: 2016년 9월 19일 ● ISBN: 978-89-97924-24-0 93000 [강컴] [교보] [반디] [알라딘] [예스24] [인터파크] [샘
roadbook.co.kr
'교재 실습 > 자바 웹 프로그래밍 Next Step' 카테고리의 다른 글
2.4 테스트와 리팩토링을 통한 문자열 계산기 구현 (0) | 2025.01.05 |
---|---|
2.3.3 추가 요구사항 (0) | 2025.01.04 |
2.3.1 요구사항 (0) | 2025.01.02 |
2.2.3 테스트 중복 코드 제거 (0) | 2025.01.01 |
2.2.2 결과 값을 눈이 아닌 프로그램을 통해 자동화 (1) | 2024.05.06 |
댓글