[Book - JUnit IN ACTION 3판] 13. JUnit 5와 지속적 통합
테스트와 지속적 통합 JUnit 테스트를 개발 주기 안에 포함하는 것은 굉장히 중요한 일이다. 일반적인 개발 주기 코드 작성 > 구동 > 테스트 > 코드 작성 TDD를 적용한 개발 주기 테스트 > 코드 작성 > 구동 > 테스트 모듈은 서로 ...
테스트와 지속적 통합 JUnit 테스트를 개발 주기 안에 포함하는 것은 굉장히 중요한 일이다. 일반적인 개발 주기 코드 작성 > 구동 > 테스트 > 코드 작성 TDD를 적용한 개발 주기 테스트 > 코드 작성 > 구동 > 테스트 모듈은 서로 ...
이번 챕터는 주로 쓰이는 IDE에서 JUnit 5로 테스트를 어떻게 실행하는지를 알려 준다. 주로 쓰이는 IDE는 IntelliJ, Eclipse, NetBeans가 있다. JUnit 5가 처음 출시되었을 때는 IntelliJ가 지원하는 유일한 IDE였다고 한다. 그래서 그런지 IntelliJ가 JUnit 5와 통합이 잘 되어 있고, 나머지 Ec...
Gradle은 아파치 Ant와 아파치 Maven에 녹아 있는 개념에서 시작된 오픈 소스 빌드 자동화 도구다. Maven은 프로젝트 설정 파일은 XML로 작성한다. Gradle은 프로젝트 설정 파일을 Groovy를 기반으로 한 DSL(domain specific language, 도메인 특화 언어)로 작성한다. DSL은 특정한 애플리케이션 도메인에...
Maven의 장점은 사고의 프레임을 만들어 둔 뒤 개발자가 그 프레임 안에서 사고할 수 있도록 유도하는 것이다. Maven을 사용하는 개발자는 Maven식으로 생각하고, 작업을 수행할 수밖에 없게 된다. 대부분의 상황에서 Maven은 말도 안되는 실행을 허용하지 않는다. 이는 개발자에게 프로젝트가 어떻게 실행되어야 하는지 분명하게 안내하는 효과가...
일반적인 단위 테스트의 한계 사용자 인증이 되었는지를 검증하는 isAuthenticated 메서드를 구현하는 서블릿을 작성해 보자. 서블릿이란 웹 애플리케이션 서버에서 동작하는 자바 클래스를 말한다. import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.Http...
개별 메서드를 단위 테스트할 때 환경이나 다른 메서드와 격리하는 것은 확실히 좋은 목표다. 스텁을 활용하면 소스 코드를 웹 서버, 파일 시스템, 데이터베이스 등의 환경에서 격리하여 단위 테스트를 할 수 있다. 그렇다면 메서드 호출을 다른 클래스로부터 격리하는 것과 같이 조금 더 세밀한 격리를 해야 할 때는? 모의 객체를 사용하면 된다. 모의 객...
아래 그림과 같이 다른 클래스에 의존하는 애플리케이션이 있고, 다른 클래스 역시 또 다른 클래스나 외부 환경에 의존한다. JUnit 5를 사용해서 HTTP 서버, 데이터베이스, 물리 장비 등의 외부 리소스에 의존하는 애플리케이션을 테스트하는 방법을 알아보자. 특정한 런타임 환경에 의존하는 애플리케이션을 위한 단위 테스트를 작성하기는 매우 어렵다...
테스트 커버리지 도구를 이용해서 테스트가 커버한 코드와 커버하지 못한 코드가 얼마나 되는지를 확인하고, 해당 테스트가 얼마나 유용한지를 계산해 보자. 그리고 TDD가 무엇인지 간단하게 알아보고 어떻게 하면 테스트하기 쉬운 코드를 작성할 수 있는지를 알아보자. 테스트 커버리지 측정하기 단위 테스트를 작성하면 애플리케이션을 변경하고 리팩터링할 때 확신...
다양한 유형의 소프트웨어와 그러한 테스트가 애플리케이션의 생애 주기에서 수행하는 역할을 살펴보자. 이 모든 내용을 왜 다 알아야 할까? 단위 테스트는 계획과 준비 없이 되는 것이 아니기 때문이다. 최고 수준의 개발자가 되기 위해서는 단위 테스트를 기능 테스트를 비롯한 다른 테스트와 구분할 수 있어야 한다. 그렇게 단위 테스트가 왜 필요한지를 이...
JUnit 4에서 JUnit 5로의 전환 과정 JUnit 5는 새로운 아키텍처를 적용한 새로운 패러다임이다. JUnit 5에는 새로운 패키지, 애노테이션, 메서드, 클래스가 추가되었다. JUnit은 JUnit Vintage 테스트 엔진을 활용하여 테스트를 JUnit 4에서 JUnit 5로 전환하는 로드맵을 제시한다. 주...