테스트
20 posts
Springboot의 TestRestTemplate 알아보기

다음은 TestRestTemplate 링크 를 번역하면서 공부한 글입니다. 🙌 기존에 RestTemplate을 활용하여 통합테스트를 많이 했을 것이다. 스프링부트에는 굉장히 비슷하게 동작하는 TestRestTemplate이 있다. 두가지 모두 통합테스트에서 유용하며 HTTP API를 다룰 수 있다. TestRestTemplate의 예시를 한번 들여다보자. RestTemplate과 거의 유사한 형테를 지니고 있다. 하지만 TempRestTemplate은 RestTemplate을 확장하지 않으며 몇가지 다른 기능을 제공한다. 🌩 TestRestTemplate은 무엇이 다를까? 1. Auth Credentials을 설정할 수 있는 생성자를 제공한다. TestRestTemplate을 생성할 때 기본 authentication을 설정하여 생성할 수 있다. 그러면 해당 인스턴스를 활용한 모든 요청이 해당 credential이 적용된 채로 수행된다. 2. HttpClientOption을 제공하…

October 24, 2021
스프링부트
테스트
Springboot 테스트 다시 한번 알아보기_중요한 건 여러 번 😊

다음 링크를 읽고 정리한 내용입니다 🙌 이전에 작성했던 글이 있습니다. 스프링부트에서 지원하는 여러 테스팅 기법들을 통해서 단위 테스트나 스프링 컨텍스트를 띄우는 통합 테스트를 진행할 수 있다. 사전 준비로는 스프링부트 프로젝트에 의존성을 추가해야한다. 🌩 @SpringBootTest 통합테스트 통합테스트는 어플리케이션의 여러 레이어의 통합 로직을 테스트 하는 것이다. 따라서 mocking을 하지 않는다. 원칙적으로는 통합테스트는 단위테스트와 분리되어 있어야하며 실행 또한 분리해서 실행해야 한다. 다른 profile 환경으로 나누고 통합테스트만을 분리하여 실행해야한다. 이렇게 해야하는 이유 중 하나는 통합 테스트는 어플리케이션 컨텍스트를 띄우는 작업을 필요로 하기 때문에 상대적으로 긴 시간이 소요된다. 또한 실제 데이터베이스의 실행을 필요로 하기도 한다. 은 컨테이너 전체를 띄우는데 유용하다. 이 어노테이션은 테스트에 사용될 ApplicationContext를 생성하여 테스트…

October 23, 2021
스프링부트
테스트
Springboot 언제 어떤 테스트를 사용할까

Intro 스프링부트 프로젝트를 진행하다보면 웹 mvc에 대한 테스트를 진행해야할 때가 있다. 때로는 각 layer에 대한 슬라이스 테스트를 작성하거나, 일부분에 대한 통합 테스트만을 진행할 때 Mock 테스트를 해야할 때도 있다. 테스트 관련 annotation에 대해서 정리하고 각 annotation의 차이 및 언제 무엇을 사용하면 좋을지 정리해본다. 어노테이션은 을 찾아 해당 configuration에 맞추어 실제 Spring web context를 실행햔다. Spring context의 설정으로 그대로 적용해서 테스트를 진행해야 할 경우에 해당 어노테이션을 붙여서 테스트를 하는 것이 좋다. 하지만 전체 컨텍스트를 로드하는 만큼 굉장히 오랜 시간이 걸린다. 실제로 어노테이션이 붙은 테스트를 돌려본다면 다음과 같은 스프링 컨텍스트르 로딩하는 긴 로그가 찍히는 것을 확인할 수 있다. 위 어노테이션은 다음과 같이 를 주입받아서 톰캣 서버를 띄우지 않은 상태로 API 요청 …

August 17, 2021
스프링부트
테스트
TDD 맛보기 - 테스트 종류

총 4가지 테스트에 대해서 간단히 다룰 것이다. 지금 우테코 LEVEL1에서 진행하고 있는 미션에서는 단위 테스트를 연습하는 TDD를 하고 있다. 내가 TDD를 할 줄이야.. 유닛 테스트(Unit Test) 가장 작은 단위의 테스트로 메서드 레벨로 테스트를 한다. (현재 내가 진행중인 TDD 방식) 즉각적인 결과가 나와서, 해당 메소드에 대한 원하는 결과가 연산이 되는지에 대한 확인이 가능한 테스트이다. 테스트 하기 어려운 메소드들이 등장하곤 하는데 이때는 stub (더미 객체가 마치 실제로 동작하는 것처럼 보이도록 만든 객체) 을 사용하여서 테스트 하는데 비용을 따져서 판단하도록 한다. (비용 관점을 항상 고려해야한다!) 하나의 메소드가 원하는 방식으로 동작한다는 것을 확인할 수 있지만, 결합되었을 때, 잘 동작하는지에 대한 보장은 어렵다. 전 구간 테스트(End-To-End Test) 시스템 자체와 시스템을 구축하고 배포하는 프로세스를 모두 시험한다. 내부 기능들(클래…

February 25, 2021
테스트