728x90
두 번째 테스트: 길이만 8글자 미만이고 나머지 조건은 충족하는 경우
두 번째 테스트 메서드를 추가하자.
이번에 테스트할 대상은 패스워드 문자열의 길이가 8글자 미만이고 나머지 조건을 충족하는 암호이다.
이 암호의 강도는 보통이어야 한다.
두 번째 테스트 코드 작성
@DisplayName("길이 8글자 미만, 나머지 조건 충족, 강도는 보통")
@Test
void meetsOtherCriteria_except_for_Length_Then_Normal() {
PasswordStrengthMeter meter = new PasswordStrengthMeter();
PasswordStrength result = meter.meter("ab12!@A");
assertThat(PasswordStrength.NORMAL).isEqualTo(result);
}
enum PasswordStrength: 열거 타입 작성
PasswordStrength 열거 타입에 NORMAL이 없으므로 컴파일 에러가 발생한다.
NORMAL을 추가해서 컴파일 에러를 없앤다.
public enum PasswordStrength {
NORMAL, STRONG
}
PasswordStrengthMeterTest 실행
컴파일 에러를 없앤 뒤 PasswordStrengthMeterTest를 실행한다.
새로 추가한 테스트가 실패했다.
새로 추가한 테스트를 통과시키는 가장 쉬운 방법은 meter() 메서드가 NORMAL을 리턴하도록 수정하는 것이다.
meter() 메서드 수정
public class PasswordStrengthMeter {
public PasswordStrength meter(String s) {
return PasswordStrength.NORMAL; // 두 번째 테스트만 통과하게 됨
}
}
그런데 이렇게 수정하면 앞서 만든 테스트를 통과하지 못한다. (Strong)
두 테스트를 모두 통과시킬 수 있는 만큼 코드를 작성해 보자.
쉬운 방법은 길이가 8보다 작으면 NORMAL을 리턴하는 코드를 추가하는 것이다.
두 테스트를 통과시키기 위한 코드 추가
public class PasswordStrengthMeter {
public PasswordStrength meter(String s) {
if (s.length() < 8) {
return PasswordStrength.NORMAL;
}
return PasswordStrength.STRONG;
}
}
코드를 수정했으니 테스트를 실행하자.
테스트 실행
통과다!
앞서 예와 동일하게 길이가 8 미만이고 나머지 조건은 충족하는 암호에 대한 검증 코드를 추가하고 테스트를 실행해보자
검증 코드 추가
@DisplayName("길이 8글자 미만, 나머지 조건 충족, 강도는 보통")
@Test
void meetsOtherCriteria_except_for_Length_Then_Normal() {
PasswordStrengthMeter meter = new PasswordStrengthMeter();
PasswordStrength result = meter.meter("ab12!@A");
assertThat(PasswordStrength.NORMAL).isEqualTo(result);
PasswordStrength result2 = meter.meter("Ab12!c");
assertThat(PasswordStrength.NORMAL).isEqualTo(result2);
}
728x90
'Book Review > 테스트 주도개발 시작하기' 카테고리의 다른 글
[테스트 주도개발 시작하기] Chapter1. TDD 시작(6): 암호 검사기 (0) | 2023.04.15 |
---|---|
[테스트 주도개발 시작하기] Chapter1. TDD 시작(5): 암호 검사기 (0) | 2023.04.15 |
[테스트 주도개발 시작하기] Chapter1. TDD 시작(3): 암호 검사기 (0) | 2023.04.07 |
[테스트 주도개발 시작하기] Chapter1. TDD 시작(2): 암호 검사기 (0) | 2023.04.04 |
[테스트 주도개발 시작하기] Chapter1. TDD 시작(1) (0) | 2023.04.03 |