단위 테스트란?
버그 발견 시간이 늦어짐에 따라 비용이 기하급수적으로 커지는 것을 알 수 있다.
1. Development : 개발
2. Unit Tests (단위 테스트) : 개발자 테스트
3. QA Testing : 블랙박스 테스팅, 주로 QA팀이 Production 환경과 유사한 환경(Stage)에서 테스팅
4. Production : 실 서비스 운영 환경
따라서 테스트 코드를 작성한다면 프로그램의 버그를 사전에 발견하여 기하급수적인 비용의 증가가능성을 사전에 방지할 수 있다.
개발자는 단위 테스트를 작성하여 프로그램을 테스트 할 수 있다.
단위 테스트는 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지를 검사하는 테스트 기법이다.
단위 테스트는 빠르게 작성할 수 있고 문제 발생 시 어느 부분이 잘 못 되었는지를 빠르고 정확하게 확인할 수 있다는 장점이 있다.
JUnit5 다루기
1. IntelliJ를 실행한다.
2. New Project를 클릭
3. 왼쪽 메뉴에서 "Spring Initialize"를 클릭하고 아래와 같이 설정
4. [중요] 꼭 다음 사항을 확인한다.
Name : junit5-practice
Language : Java
Build system : Gradle - Groovy
Group : com.sparta
JDK : 17
프로젝트 경로(Location)은 자유롭게 설정
5. Next를 클릭
6. 아무것도 선택하지 않고 Create를 클릭
이렇게 BeforeAfterTest.java 파일 생성
CustomTest.java 생성
@Order를 실습하기 위해 CostomTest 코드를 수정
@Nested : 주제 별로 테스트를 그룹지어서 하기 위해 사용
@Order : 그룹 내의 테스트 메서드 실행 순서 정하기 위해 사용
repeatTest는 5번 반복하도록 되어있다.(value = 5)
name = "반복 테스트 {currentRepetition} / {totalRepetitions}" : 테스트의 이름에 "반복 테스트 {현재 반복} / {총 반복 숫자}" 가 표시된다.
getCurrentRepetition() : 현재 반복 횟수
getTotalRepetitions() : 총 반복 횟수
@ValueSource(ints = {1, 2, 3, 4, 5, 6, 7, 8, 9})
현재 테스트 메서드의 매개변수인 num에 이 숫자 목록들을 집어넣으며 반복한다.
Calculator.java, AssertionTest.java 파일을 만든다.
@BeforeEach : 각각의 테스트 함수가 실행되기 전에 객체를 사용할 수 있도록 객체를 만들어주는것이다.
assertEquals() : 첫번째 인수는 예상값, 두 번째 인수는 결과값을 넣는다. 예상값과 일치하면 테스트 성공
assertNotEquals() : 예상값과 일치하지 않으면 테스트 성공이다. 예상값과 일치하면 테스트 실패가 뜬다.
assertTrue() : True를 예측한다. False라면 테스트 실패
assertFalse() : False를 예측한다. True라면 테스트 실패
assertNotNull() : 실제값이 Null이 아님을 예측한다.
assertNull() : 실제값이 Null임을 예측한다.
assertEquals() : 첫번째 인수는 예상하는 오류 메시지, 두 번째 인수는 실제 오류 메시지
또한 오류의 타입도 예측한다. assertThrows로 던진 IllegalArgumentException 오류를 예측하므로 다른 종류의 오류라면 테스트가 실패한다.
Given - When- Then 테스트 패턴 파악할 수 있는 코드이다.
'Spring 심화주차 > 1주차' 카테고리의 다른 글
6. 통합 테스트란 무엇일까 (0) | 2024.09.16 |
---|---|
5. Mockito란 무엇일까? (0) | 2024.09.11 |
3. 카카오 사용자 정보로 회원가입 구현 (1) | 2024.09.10 |
2. 카카오 사용자 정보 가져오기 (0) | 2024.09.10 |
1. 소셜 로그인 (0) | 2024.09.09 |