https://github.com/YunByungil/Test-Driven-Development/tree/main/src/main/java/development/tdd/chap02 GitHub - YunByungil/Test-Driven-Development: 테스트 주도 개발 시작하기 테스트 주도 개발 시작하기 . Contribute to YunByungil/Test-Driven-Development development by creating an account on GitHub. github.com https://github.com/YunByungil/Test-Driven-Development/tree/main/src/test/java/development/tdd/chap02 GitHub - YunB..
네 번째 테스트: 값이 없는 경우 테스트 코드를 작성하는 과정에서 아주 종요한 테스트를 놓쳤다. 바로 값이 없는 경우를 테스트하지 않은 것이다. meter() 메서드에 null을 전달하면 NullPointerException이 발생하게 된다. null을 입력할 경우 암호 강도 측정기는 어떻게 반응해야 할까? IllegalArgumentException 발생한다. 유효하지 않은 암호를 의미하는 PasswordStrength.INVALID를 리턴한다. 두 번째 방법을 선택해보자. 네 번째 테스트 코드 작성 입력이 null인 경우에 대한 테스트 추가 @DisplayName("입력이 null인 경우") @Test void nullInput_Then_Invalid() { assertStrength(null, Pa..
세 번째 테스트: 숫자를 포함하지 않고 나머지 조건을 충족하는 경우 세 번째 테스트 메서드를 추가하자. 이번 테스트 대상은 숫자를 포함하지 않고 나머지 조건은 충족하는 암호이다. 이 암호도 보통 강도를 가져야 한다. 세 번째 테스트 코드 작성 @DisplayName("숫자 포함x, 나머지 조건 충족, 강도는 보통") @Test void meetsOtherCriteria_except_for_number_Then_Normal() { PasswordStrengthMeter meter = new PasswordStrengthMeter(); PasswordStrength result = meter.meter("ab!@ABqwer"); assertThat(PasswordStrength.NORMAL).isEqualT..
두 번째 테스트: 길이만 8글자 미만이고 나머지 조건은 충족하는 경우 두 번째 테스트 메서드를 추가하자. 이번에 테스트할 대상은 패스워드 문자열의 길이가 8글자 미만이고 나머지 조건을 충족하는 암호이다. 이 암호의 강도는 보통이어야 한다. 두 번째 테스트 코드 작성 @DisplayName("길이 8글자 미만, 나머지 조건 충족, 강도는 보통") @Test void meetsOtherCriteria_except_for_Length_Then_Normal() { PasswordStrengthMeter meter = new PasswordStrengthMeter(); PasswordStrength result = meter.meter("ab12!@A"); assertThat(PasswordStrength.NOR..
첫 번째 테스트: 모든 규칙을 충족하는 경우 여기가 중요하다! 첫 번째 테스트를 잘 선택하지 않으면 이후 진행 과정이 순탄하게 흘러가지 않는다. 첫 번째 테스트를 선택할 때에는 가장 쉽거나 가장 예외적인 상황을 선택해야 한다. 암호 검사 기능에서 가장 쉽거나 가장 예외적인 것은 무엇일까? 모든 규칙을 충족하는 경우 모든 조건을 충족하지 않는 경우 모든 조건을 충족하지 않는 테스트: 사실상 구현을 다 하고 테스트를 하는 방식과 다르지 않다. 모든 규칙을 충족하는 경우: 테스트를 쉽게 통과시킬 수 있다. 강함에 해당하는 값을 리턴하면 테스트에 통과할 수 있다. 모든 조건을 충족하는 경우를 먼저 테스트 코드로 작성해보자. @DisplayName("암호가 모든 조건을 충족, 강도는 강함") @Test void ..
암호 검사기 검사할 규칙은 다음 세 가지이다. 길이가 8글자 이상 0부터 9 사이의 숫자를 포함 대문자 포함 세 규칙을 모두 충족한다. -> 강함 2개의 규칙을 충족한다. -> 보통 1개 이하의 규칙을 충족한다. -> 약함 테스트할 기능의 이름을 정해보자. '약함', '보통', '강함'은 암호 등급이라고 생각할 수 있다. PasswordLevel이라는 단어를 사용하자. 등급 대신에 강도라는 의미를 사용할 수도 있다. 이 경우 PasswordStrength라는 단어를 사용할 수 있다. 암호 등급과 암호 강도 중에서 PasswordStrength를 선택했다. public class PasswordStrengthMeterTest { @DisplayName("테스트 메서드 생성") @Test void name(..