https://github.com/overult01/junit_springboot_2
도서 '자바와 JUnit을 활용한 실용주의 단위 테스트'를 참고하며 실습한 내용입니다.
https://github.com/overult01/junit_springboot_2
junit junit4 spring
Last synced: about 2 months ago
JSON representation
도서 '자바와 JUnit을 활용한 실용주의 단위 테스트'를 참고하며 실습한 내용입니다.
- Host: GitHub
- URL: https://github.com/overult01/junit_springboot_2
- Owner: overult01
- Created: 2022-05-19T02:49:59.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2022-05-19T16:35:09.000Z (about 4 years ago)
- Last Synced: 2025-06-05T14:02:47.606Z (about 1 year ago)
- Topics: junit, junit4, spring
- Language: Java
- Homepage:
- Size: 10.2 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# junit_springboot_2
- 도서 '자바와 JUnit을 활용한 실용주의 단위 테스트(길벗, 2019)'을 토대로 실습하며, 학습 내용중 일부를 블로그에 정리하였습니다.
- 자바 8, JUnit4
## 개요
- ch01: JUnit4 시작
+ [준비-실행-단언(AAA)](https://structuring.tistory.com/198)
- ch02: @before
+ @before: 각 JUnit 테스트 진행시 필요한 공통적인 초기화 담당 (가독성 향상)
- ch03: 단언(Assert)
+ 3.1.1 단언(어떤 조건이 참인지 검증하는 방법) 종류 2가지
+ 1) assertTrue: 가장 일반적 단언. 전통적. JUnit 내.
+ 2) assertThat: 햄크레스트 단언. 명확한 값을 비교. 주사용.
+ 3.1.2 햄크레스트의 중요 매처들 확인하기: is, not 장식자
+ 3.1.3 closeTo: 부동소수점 2개를 비교
+ 3.1.4 단언 설명
+ 3.2.1 예외를 기대하는 3가지방법
+ 1) @test 사용
+ 2) try/catch, fail
+ 3) ExpectedException 규칙
+ 3.2.2 예외 무시: throws
- ch04: 테스트 조직
+ 4.1 [AAA로 테스트 일관성 유지](https://structuring.tistory.com/198)
+ 4.2 동작 테스트 vs 메서드 테스트
: 개별 메서드를 테스트하는 것이 아니라, 클래스의 종합적인 동작을 테스트해야 한다.
+ 4.3 테스트와 프로덕션 코드(테스트 대상)의 관계
: 일방향(테스트 코드는 프로덕션 코드에 의존한다. 그 반대는 존재를 몰라 의존하지x)
+ 4.3.1 테스트와 프로덕션 코드 분리(최소 3가지 방법 존재)
: 보통 테스트 코드를 별도 디렉터리로 분리 but 프로덕션 코드와 동일 패키지에 삽입한다. test 디렉터리 구조는 src 디렉터리를 반영하여, 동일 패키지를 가진다.
+ 4.3.2 내부 데이터 노출 vs 내부 동작 노출
+ 4.4 집중적인 단일 목적 테스트의 가치
+ 4.5 문서로서의 테스트
+ 4.5.1 일관성 있는 이름으로 테스트 문서화
+ 4.5.2 테스트를 의미 있게 만들기
+ 4.6 @Before와 @After (공통 초기화와 정리) 더 알기
+ 4.6.1 BeforeClass와 AfterClass 애너테이션
+ 4.7 녹색이 좋다: 테스트를 의미 있게 유지
+ 4.7.1 테스트를 빠르게
+ 4.7.2 테스트 제외
---------------
2부 빠른 암기법 습득
5장 좋은 테스트의 FIRST 속성
5.1 FIRST: 좋은 테스트 조건
5.2 [F]IRST: 빠르다
5.3 F[I]RST: 고립시킨다
5.4 FI[R]ST: 좋은 테스트는 반복 가능해야 한다
5.5 FIR[S]T: 스스로 검증 가능하다
5.6 FIRS[T]: 적시에 사용한다
5.7 마치며
6장 Right-BICEP: 무엇을 테스트할 것인가?
6.1 [Right]-BICEP: 결과가 올바른가?
6.2 Right-[B]ICEP: 경계 조건은 맞는가?
6.3 경계 조건에서는 CORRECT를 기억하라
6.4 Right-B[I]CEP: 역 관계를 검사할 수 있는가?
6.5 Right-BI[C]EP: 다른 수단을 활용하여 교차 검사할 수 있는가?
6.6 Right-BIC[E]P: 오류 조건을 강제로 일어나게 할 수 있는가?
6.7 Right-BICE[P]: 성능 조건은 기준에 부합하는가?
6.8 마치며
7장 경계 조건: CORRECT 기억법
7.1 [C]ORRECT: [C]onformance(준수)
7.2 C[O]RRECT: [O]rdering(순서)
7.3 CO[R]RECT: [R]ange(범위)
__7.3.1 불변성을 검사하는 사용자 정의 매처 생성
__7.3.2 불변 메서드를 내장하여 범위 테스트
7.4 COR[R]ECT: [R]eference(참조)
7.5 CORR[E]CT: [E]xistence(존재)
7.6 CORRE[C]T: [C]ardinality(기수)
7.7 CORREC[T]: [T]ime(시간)
7.8 마치며
3부 더 큰 설계 그림
8장 깔끔한 코드로 리팩토링하기
8.1 작은 리팩토링
__8.1.1 리팩토링의 기회
__8.1.2 메서드 추출: 두 번째로 중요한 리팩토링 친구
8.2 메서드를 위한 더 좋은 집 찾기
8.3 자동 및 수동 리팩토링
8.4 과한 리팩토링?
__8.4.1 보상: 명확하고 테스트 가능한 단위들
__8.4.2 성능 염려: 그러지 않아도 된다
8.5 마치며
9장 더 큰 설계 문제
9.1 Profile 클래스와 SRP
9.2 새로운 클래스 추출
9.3 명령-질의 분리
9.4 단위 테스트의 유지 보수 비용
__9.4.1 자신을 보호하는 방법
__9.4.2 깨진 테스트 고치기
9.5 다른 설계에 관한 생각들
9.6 마치며
10장 목 객체 사용
10.1 테스트 도전 과제
10.2 번거로운 동작을 스텁으로 대체
10.3 테스트를 지원하기 위한 설계 변경
10.4 스텁에 지능 더하기: 인자 검증
10.5 목 도구를 사용하여 테스트 단순화
10.6 마지막 하나의 단순화: 주입 도구 소개
10.7 목을 올바르게 사용할 때 중요한 것
10.8 마치며
11장 테스트 리팩토링
11.1 이해 검색
11.2 테스트 냄새: 불필요한 테스트 코드
11.3 테스트 냄새: 추상화 누락
11.4 테스트 냄새: 부적절한 정보
11.5 테스트 냄새: 부푼 생성
11.6 테스트 냄새: 다수의 단언
11.7 테스트 냄새: 테스트와 무관한 세부 사항들
11.8 테스트 냄새: 잘못된 조직
11.9 테스트 냄새: 암시적 의미
11.10 새로운 테스트 추가
11.11 마치며
4부 더 큰 단위 테스트 그림
12장 테스트 주도 개발
12.1 TDD의 주된 이익
12.2 단순하게 시작
12.3 또 다른 증분 추가
12.4 테스트 정리
12.5 또 다른 작은 증분
12.6 다수의 응답 지원: 작은 설계 우회로
12.7 인터페이스 확장
12.8 마지막 테스트들
12.9 문서로서의 테스트
12.10 TDD의 리듬
12.11 마치며
13장 까다로운 테스트
13.1 멀티스레드 코드 테스트
__13.1.1 단순하고 똑똑하게 유지
__13.1.2 모든 매칭 찾기
__13.1.3 애플리케이션 로직 추출
__13.1.4 스레드 로직의 테스트 지원을 위해 재설계
__13.1.5 스레드 로직을 위한 테스트 작성
13.2 데이터베이스 테스트
__13.2.1 고마워, Controller
__13.2.2 데이터 문제
__13.2.3 클린 룸 데이터베이스 테스트
__13.2.4 controller를 목 처리
13.3 마치며
14장 프로젝트에서 테스트
14.1 빠른 도입
14.2 팀과 같은 편 되기
__14.2.1 단위 테스트 표준 만들기
__14.2.2 리뷰로 표준 준수 높이기
__14.2.3 짝 프로그래밍을 이용한 리뷰
14.3 지속적 통합으로 수렴
14.4 코드 커버리지
__14.4.1 커버리지는 어느 정도여야 하는가?
__14.4.2 100% 커버리지는 진짜 좋은가?
__14.4.3 코드 커버리지의 가치
14.5 마치며