코드가 잘 돌아가려나???

해당 시스템이 어떤 기능과 서비스를 제공하는지 확인!

자동적으로 기본적인 기능이 정상 작동하는지 확인할 수 있다.

Test-Driven Development









Java 단위 테스트 프레임워크로,최신 기능과 확장성을 제공합니다.테스트 작성과 실행을 편리하게 해주는 다양한 어노테이션과 API를 제공합니다.



테스트 대상의 기능을 테스트하고 검증하는 코드


하나의 테스트 메서드에서여러 개의 테스트 입력 값과 함께 반복 실행할 수 있게 해줌
String, short, byte, int, long, float, double, char, boolean, Class 타입까지 지원합니다.






소프트웨어의 개별 구성 요소(함수, 메소드, 클래스 등)가정확하게 작동하는지 확인하는 테스트

소프트웨어의 여러 구성 요소가함께 모여서 제대로 작동하는지 확인하는 테스트

사용자가 소프트웨어를 실제로 사용하는 것처럼전체 시스템이 처음부터 끝까지 제대로 작동하는지 확인하는 테스트












테스트를 진행하기 어려운 경우,이를 대신해 테스트를 진행할 수 있도록 만들어주는 객체
테스트를 위해 메서드의 행동을 인위적으로 설정

테스트를 위한 실제 단순 구현체를 활용

객체의 행동을 감시일부 메서드 동작에 대해서 인위적 설정 가능

Stub + Spy

Mock의 경우
기본적으로 모든 동작을 stub
Spy의 경우
기본적으로 모든 동작을 실제 객체 그대로 사용
Mock 객체의 메서드가 특정 값을 리턴한다고 가정

Mock 객체의 메서드에서 예외가 발생한다고 가정

Mock 객체의 Void 메서드가 정상 작동한다고 가정

Mock 객체의 Void 메서드에서 예외가 발생한다고 가정

Mocking 메서드의 인자로 들어가는 값에 따라 메서드 동작을 유연하게 지정


Mocking 객체의 특정 메서드가 호출되었는지 확인


Mocking 객체의 특정 메서드가 호출될 때, 어떤 파라미터가 전달되었는지 확인







@BeforEach에 넣지 않기given - when - then을 수행해야 한다.@BeforeEach에 공통적인 상황 설정을 넣으면, 테스트 코드 간 의존성이 생길 수 있다.LocalDateTime.now() 등의 실행 시점에 따라 결과가 달라지는 코드는 테스트하기 어렵다.

Acceptance Test Driven Development
최종 사용자가 요구한 기능이 제대로 구현되었는지,소프트웨어가 사용자의 기대에 부합하는지를 확인하는 테스트


사용자 스토리로 검증하는 기능 테스트사용자 스토리로 테스트할 시나리오를 지정






테스트를 격리해야하는 대상은 코드가 아니라 또 다른 테스트테스트 간의 공유하는 의존성이 아니라면 실제 객체를 사용

테스트 대상을 협력객체로 부터 격리하기 위해, 테스트 대상이 의존하는 모든 것을 가짜 객체로 대체




테스트 수행 시 필요한 데이터베이스, 메시지 브로커, 웹 서버에 대한 테스트용 일회성 Docker 컨테이너를 제공

개발 진행 중 Mocking Server를 제공

SpringBoot에서 local에서 서버 기동시,Docker-Compose yaml 파일을 통해 개발 인프라 환경을 자동으로 구성해준다.

로컬에서 실행 중인 서버를 외부 인터넷을 통해 접근 가능다른 개발자와 로컬에서 개발 중인 서버를 함께 테스트 할 때 유용
# Server 기동
python -m http.server 8080
# ngrok 토큰 활성화
ngrok config add-authtoken ${NGROK_AUTH_TOKEN}
# ngrok을 통한 로컬 서버 외부 연결
ngrok http 8080cmd + shift + T→ 테스트 클래스 생성 or 테스트 클래스 찾기





⭐ Editor → Live Templates







