나는 IntelliJ와 Maven을 이용해서 할 예정이다...!
일단 먼저 JUnit 설정을 해야하는데,
프로젝트 하나를 새로 생성해주고, JUnit5 라이브러리를 추가해주면 된다.
라이브러리 추가의 경우,
[File] → [Project Structrue ...] 메뉴를 통해서 생성해주면 된다
org.juni.jupiter:junit-jupiter:5.5.0 을 입력하라고 하는데, 이렇게 하면 Found:0 으로 검색이 안된다....
따라서, 아래와 같이 검색해주어야 한다.

그리고 클래스를 추가해서 테스트 코드를 실행하면, 잘 실행이 되는 것을 확인할 수 있다.

이제 메이븐 프로젝트에서 JUnit을 설정해보자.
이를 위해서 pom.xml 파일에 JUnit5를 위한 의존성을 추가해주어야 한다.
TDD : Test-Driven Development (테스트 주도 개발)
기능을 검증하는 테스트 코드를 먼저 작성하고 테스트를 통과시키기 위해 개발을 진행하는 것
[ example1_계산기 예제 ]
assertEquals() : 인자로 받은 두 값이 동일한지 비교
- 사용 방법 : assertEquals(기대값, 실제값)
- 일치하지 않는 경우 : AssertionFailedError 발생
인스턴스 메소드 VS 정적 메소드
● 인스턴스 메소드
객체를 생성해야 됨
● 정적 메소드
+) src/test/java/ 소스 폴더는 배포 대상에서 제외됨
테스트 → 코딩 → 리팩토링 : 이 과정을 계속 반복한다
TDD의 이점 : 코드 수정에 대한 피드백이 빠름 → 잘못된 코드가 배포 되는 것 방지 가능
첫 번째 테스트
- 가장 쉽거나 가장 예외적인 상황을 선택해야함
: 모든 조건을 충족하는 경우
두 번째 테스트
- 패스워드 문자열의 길이가 8글자 미만, 나머지 조건은 충족 == 암호 강도: 보통
세 번째 테스트
- 숫자를 포함하지 않고 나머지 조건은 충족하는 암호 == 암호강도: 보통
네 번째 테스트
- 값이 없는 경우 NPE(Null Pointer Exception) 발생
해결하기 위해서는
- IllegalArgumentException 발생 / PasswordStrength.INVALID 설정
다섯 번째 테스트
- 대문자 포함하지 않고 나머지 조건을 충족하는 경우
이렇게 까지 하면 한 가지 조건만 충족하거나 모든 조건을 충족하지 않는 경우만 남음
여섯 번째 테스트
- 길이가 8글자 이상인 조건만 충족
일곱 번째 테스트
- 숫자 포함 조건만 만족함
여덟 번째 테스트
- 대문자 포함 조건만 충족
일일이 테스트마다 로직을 따로 if문으로 분기한다면, 코드 길이도 길어지고 가독성도 떨어짐
=> 공통적인 부분이 뭘까?? => 조건 충족 개수로 묶으면 어떨까?
아홉 번째 테스트
- 아무 조건도 충족하지 않은 경우

'Java' 카테고리의 다른 글
| 테스트 하기 쉬운 코드 && 테스트 범위와 종류 (0) | 2025.10.14 |
|---|---|
| TDD로 기능 추가해보기 (0) | 2025.09.24 |
| 스프링 데이터 JPA (2) | 2025.08.17 |
| 나를 위한 클래스와 객체, 상속 부분 내용 정리 (0) | 2023.05.16 |
| 끝말잇기 게임 만들기 (0) | 2023.05.15 |