JUnit in Action : TDD를 위한 테스트 원칙, 도구 및 활용

JUnit in Action : TDD를 위한 테스트 원칙, 도구 및 활용

$42.21
저자

커털린투도세

저자:커털린투도세
루마니아아르제시의피테슈티에서태어났다.부쿠레슈티에서컴퓨터과학박사학위를받았다.15년이상의자바개발경력이있으며많은통신프로젝트와금융프로젝트에시니어소프트웨어개발자또는테크리더자격으로참여했다.현재럭소프트(Luxoft)에서자바와웹개발전문가로활동중이다.부쿠레슈티에서자동화와컴퓨터공학을가르쳤고폴란드에서는신입자바개발자를양성하는기업의부트캠프및사내자바교육을진행했다.IT분야외에도수학,세계문화,축구에관심이많다.지역팀인FC아르제시피테슈티의평생후원자이기도하다.

역자:이동준
글쓰는개발자가되고자한다.좋은책들을읽기만한빚을갚고개발생태계에도움을주기위해번역을시작했다.고려대학교에서국어국문학을공부했으며,현재는삼성SDS에서삼성클라우드플랫폼의BM/HPC관련상품개발자로일하고있다.

목차


1부JUnit

1장JUnit시작하기
1.1프로그램이제대로동작하는지증명하기
1.2밑바닥부터시작하기
-1.2.1단위테스트프레임워크이해하기
-1.2.2단위테스트추가하기
1.3JUnit설치하기
1.4JUnit을활용하여테스트하기
정리

2장JUnit핵심살펴보기
2.1핵심애노테이션
-2.1.1@DisplayName
-2.1.2@Disabled
2.2중첩테스트
2.3태그를사용한테스트
2.4단언문
2.5가정문
2.6JUnit5의의존성주입
-2.6.1TestInfoParameterResolver
-2.6.2TestReporterParameterResolver
-2.6.3RepetitionInfoParameterResolver
2.7반복테스트
2.8파라미터를사용한테스트
2.9동적테스트
2.10Hamcrest매처사용하기
정리

3장JUnit아키텍처
3.1소프트웨어아키텍처의개념과중요성
-3.1.1첫번째이야기:전화번호부
-3.1.2두번째이야기:운동화제조업체
3.2JUnit4아키텍처
-3.2.1JUnit4모놀리식아키텍처
-3.2.2JUnit4runner
-3.2.3JUnit4rule
-3.2.4JUnit4아키텍처의단점
3.3JUnit5아키텍처
-3.3.1JUnit5모듈성
-3.3.2JUnitPlatform
-3.3.3JUnitJupiter
-3.3.4JUnitVintage
-3.3.5JUnit5내부아키텍처구성도
정리

4장JUnit4에서JUnit5로전환하기
4.1JUnit4에서JUnit5로의전환과정
4.2JUnit4에서JUnit5로전환하는데필요한의존성
4.3JUnit5애노테이션,클래스,메서드
-4.3.1JUnit4와JUnit5에서비슷하게사용하는애노테이션,클래스,메서드
-4.3.2JUnit4의@Category와JUnit5의@Tag
-4.3.3Hamcrest매처기능전환하기
-4.3.4JUnit4rule과JUnit5의확장모델
-4.3.5사용자정의rule을extension으로전환하기
정리

5장소프트웨어테스트원칙
5.1단위테스트를하는이유
-5.1.1테스트커버리지를높일수있다
-5.1.2팀생산성이향상된다
-5.1.3회귀를사전에발견하여디버깅작업을줄일수있다
-5.1.4자신있게리팩터링할수있다
-5.1.5기능구현에도움이된다
-5.1.6코드의예상동작을문서화할수있다
-5.1.7코드커버리지및다양한지표를측정할수있게해준다
5.2테스트유형
-5.2.1단위테스트
-5.2.2통합테스트
-5.2.3시스템테스트
-5.2.4인수테스트
5.3블랙박스테스트대화이트박스테스트
-5.3.1블랙박스테스트
-5.3.2화이트박스테스트
-5.3.3장단점비교
정리

2부다양한테스트전략

6장테스트품질
6.1테스트커버리지측정하기
-6.1.1테스트커버리지란무엇인가
-6.1.2코드커버리지를측정하는도구
6.2테스트하기쉬운코드작성하기
-6.2.1publicAPI는정보제공자와정보사용자간의계약이다
-6.2.2의존성줄이기
-6.2.3간단한생성자만들어보기
-6.2.4데메테르법칙따르기
-6.2.5숨은의존성과전역상태피하기
-6.2.6제네릭메서드사용하기
-6.2.7상속보다는합성활용하기
-6.2.8분기문보다는다형성활용하기
6.3TDD
-6.3.1개발주기에적응하기
-6.3.2TDD2단계수행하기
6.4행위주도개발
6.5돌연변이테스트수행하기
6.6개발주기내에서테스트하기
정리

7장스텁을활용한거친테스트
7.1스텁살펴보기
7.2스텁으로HTTP연결테스트하기
-7.2.1무엇을스텁으로대체할것인가
-7.2.2Jetty를내장웹서버로활용하기
7.3스텁으로웹서버리소스만들기
-7.3.1첫번째스텁설정하기
-7.3.2첫번째스텁테스트되짚어보기
7.4스텁으로HTTP연결만들기
-7.4.1사용자정의URL프로토콜핸들러생성하기
-7.4.2HttpURLConnection스텁생성하기
-7.4.3HTTP연결을스텁으로대체한테스트수행하기
정리

8장모의객체로테스트하기
8.1모의객체란무엇인가
8.2모의객체를활용해단위테스트하기
8.3모의객체를활용해리팩터링하기
-8.3.1리팩터링예제
-8.3.2리팩터링시고려사항
8.4HTTP연결모의하기
-8.4.1모의객체정의하기
-8.4.2예제메서드테스트하기
-8.4.3첫번째시도:쉬운리팩터링기법
-8.4.4두번째시도:클래스팩터리를사용한리팩터링
8.5모의객체를트로이목마로사용하기
8.6모의객체프레임워크사용해보기
-8.6.1EasyMock
-8.6.2JMock
-8.6.3Mockito
정리

9장컨테이너를활용한테스트
9.1일반적인단위테스트의한계
9.2모의객체를활용한테스트
9.3컨테이너활용하기
-9.3.1컨테이너를활용한테스트구현전략
-9.3.2컨테이너를활용한테스트프레임워크
9.4스텁,모의객체,컨테이너테스트비교하기
-9.4.1스텁평가
-9.4.2모의객체평가
-9.4.3컨테이너를활용한테스트평가
9.5Arquillian으로테스트하기
정리

3부여러도구를활용하여JUnit5사용하기

10장Maven3로실행하는JUnit테스트
10.1Maven프로젝트만들기
10.2Maven플러그인활용하기
-10.2.1Mavencomplier플러그인
-10.2.2MavenSurefire플러그인
-10.2.3Maven으로JUnit리포트만들기
10.3한번에모아보기
10.4Maven의과제
정리

11장Gradle6로실행하는JUnit테스트
11.1Gradle살펴보기
11.2Gradle프로젝트설정하기
11.3Gradle플러그인활용하기
11.4Gradle프로젝트를만들고JUnit5로테스트하기
11.5Gradle과Maven비교하기
정리

12장JUnit5와여러IDE지원
12.1IntelliJIDEA로JUnit5사용하기
12.2Eclipse로JUnit5사용하기
12.3NetBeans로JUnit5사용하기
12.4세가지IDE에서의JUnit5사용방법비교하기
정리

13장JUnit5와지속적통합
13.1테스트와지속적통합
13.2젠킨스살펴보기
13.3지속적통합실천하기
13.4젠킨스설정하기
13.5지속적통합환경에서작업하기
정리

4부모던프레임워크에서JUnit사용하기

14장JUnit5확장모델
14.1JUnit5확장모델살펴보기
14.2JUnit5extension생성하기
14.3확장지점을사용하여JUnit5테스트구현하기
-14.3.1승객정보를데이터베이스에영속시키기
-14.3.2승객의고유성검증하기
정리

15장프레젠테이션계층테스트
15.1테스트프레임워크선택하기
15.2HtmlUnit살펴보기
-15.2.1HtmlUnit실전예제
15.3HtmlUnit테스트작성하기
-15.3.1HTML단언문
-15.3.2특정한웹브라우저테스트하기
-15.3.3여러브라우저테스트하기
-15.3.4독립실행형GUI테스트생성하기
-15.3.5HTML폼테스트하기
-15.3.6자바스크립트테스트하기
15.4Selenium살펴보기
15.5Selenium으로테스트작성하기
-15.5.1특정한웹브라우저테스트하기
-15.5.2웹브라우저를사용한내비게이션테스트
-15.3.3여러브라우저로테스트하기
-15.5.4여러브라우저로구글검색과내비게이션테스트하기
-15.5.5웹사이트인증테스트하기
15.6HtmlUnit과Selenium
정리

16장스프링애플리케이션테스트
16.1스프링프레임워크살펴보기
16.2의존성주입살펴보기
16.3스프링애플리케이션사용및테스트
-16.3.1스프링콘텍스트를프로그래밍방식으로만들기
-16.3.2스프링에서테스트콘텍스트프레임워크사용하기
16.4JUnit5Jupiter에SpringExtension사용하기
16.5신규기능추가하고JUnit5로테스트하기
정리

17장스프링부트애플리케이션테스트
17.1스프링부트살펴보기
17.2스프링이니셜라이저로프로젝트만들기
17.3스프링애플리케이션을스프링부트로전환하기
17.4스프링부트에서테스트전용구성구현하기
17.5스프링부트애플리케이션에신규기능추가하고테스트하기
정리

18장RESTAPI테스트하기
18.1REST애플리케이션살펴보기
18.2엔티티한개를관리하는RESTfulAPI만들기
18.3엔티티여러개를관리하는RESTfulAPI만들기
18.4RESTfulAPI테스트하기
정리

19장데이터베이스애플리케이션테스트
19.1데이터베이스단위테스트시발생하는임피던스불일치
-19.1.1단위테스트는코드를격리시켜실행해야한다
-19.1.2단위테스트는작성과구동이쉬워야한다
-19.1.3단위테스트는실행속도가빨라야한다
19.2JDBC애플리케이션테스트하기
19.3스프링JDBC애플리케이션테스트하기
19.4하이버네이트애플리케이션테스트하기
19.5스프링하이버네이트애플리케이션테스트하기
19.6데이터베이스애플리케이션테스트비교하기
정리

5부JUnit5를사용한개발방법론

20장JUnit5를사용한TDD
20.1TDD의핵심개념
20.2항공편관리시스템
20.3항공편관리시스템을TDD로개발하기위한사전준비
20.4항공편관리시스템리팩터링하기
20.5TDD로신규기능추가하기
-20.5.1프리미엄항공편추가하기
-20.5.2승객중복추가를방지하는기능추가하기
정리

출판사 서평

자바단위테스트를위해알아야할모든것

JUnit은자바애플리케이션을단위테스트하기위한사실상의표준이다.자바개발자에게JUnit은이제필수가되었다.특히JUnit5에서는모던자바(자바8버전)에맞춰기능이대폭개선되어람다식이나스트림같은최신자바기능을지원한다.
《JUnitinAction》3판은JUnit5에맞춰새롭게쓰였다.이책에서는중첩테스트,태그를사용한테스트,동적테스트,의존성주입등JUnit의최신기법과새로운아키텍처를다룬다.자바챔피언이자저자인커털린투도세는독특한테스트피라미드전략을제시한다.이책에서다루는테스트전략을활용한다면테스트프로세스를여러단계로나눌수있고버그를최소화한소스를작성할수있을것이다.

이책에서다루는내용
JUnit4에서JUnit5로전환하기
효율적으로테스트자동화하기
TDD와BDD
테스트격리를위한모의객체사용하기
JUnit5를Maven이나Gradle과함께다루기