본문 바로가기
반응형

스프링/JUnit11

JUnit 테스트에서 ApplicationRunner 실행하지 않도록 설정하기 ApplicationRunner는 스프링 애플리케이션을 시작할때, 어떠한 동작을 하기 위해 사용된다. 그런데 이러한 동작이 테스트 상황에서는 필요하지 않을 수 있다. 이럴 때, 어떻게 해당 로직을 제외하고 테스트를 진행할까? 가장 간단한 방법으로 @Profile 애노테이션을 사용하는 방법이 있다. 해당 애노테이션은 스프링 애플리케이션의 런타임 환경을 관리할 수 있도록 도와준다. 이제 방법을 알아보자. 아래와 같이 ApplicationRunner를 상속하는 클래스에 "test 라는 이름의 그룹을 활성화하지 않는다"라는 의미에 @Profile("!test") 애너테이션을 추가한다. @Profile("!test") @Component public class SomeApplicationRunner impleme.. 2022. 1. 9.
JUnit의 @BeforeAll(@Before)대신 생성자를 사용해도 괜찮지 않을까? JUnit은 애너테이션을 통해서 메서드의 역할을 정할 수 있다. 이때, 애너테이션이 붙은 메서드는 실행 순서가 정해진다. JUnit5를 기준으로 @BeforeAll -> @BeforeEach -> @Test -> @AfterEach -> @AfterAll 순서로 메서드가 실행된다. 이때, 문득 떠오른 생각이 있었다. @BeforeAll이 모든 테스트 메서드 실행 전 수행되고 주어진 테스트에 대해 한 번만 실행된다면, 그냥 생성자를 사용하면 되는게 아닐까? class 블라블라Test { @BeforeAll static void setUp() { } } vs class 블라블라Test { 블라블라Test() { } } 어떤 것을 사용하는게 맞을까? 결론적으로 생성자 대신 @BeforeAll을 사용하는 것이 .. 2021. 12. 23.
Mockito란? Mockito 사용하기 Mockito란? · Mock 객체를 쉽게 만들고, 관리하고, 검증할 수 있는 방법을 제공하는 프레임워크 - Mock: 진짜 객체와 비슷하게 동작하지만, 프로그래머가 직접 행동을 관리하는 객체 - 공홈 https://site.mockito.org/ · 테스트를 작성하는 자바 개발자의 45%가 사용하는 Mock 프레임워크 - 2021년 젯브레인 설문조사 기준 https://www.jetbrains.com/lp/devecosystem-2021/java/ · 대체제: EasyMock, JMock · 애플리케이션에서 데이터베이스, 외부 API 등을 테스트할 때, 해당 제품들이 어떻게 작동하는지 항상 사용하면서 테스트를 작성한다면 매우 불편할 것이다. 이럴 때 어떻게 작동하는지 예측을 하여 Mock 객체를 만들어.. 2021. 11. 15.
[Junit] AssertJ란? 학습 목표 · AsserJ란? · AsserJ의 장점 · TODO: AssertJ의 단점 · 라이브러리 의존성 설정 · AssertJ 메소드 임포트 · 사용 방법 · 잘못된 사용 예시 AsserJ란? · 단언문(assertion)을 작성하기 위한 풍부한 인터페이스를 제공하는 자바 라이브러리로, 테스트 코드의 가독성을 향상시키고 테스트 유지 관리를 더 쉽게 만드는 것을 주요 목적으로 한다. · JUnit의 단언에 대한 표현력 부족을 보완한다. · spring-boot-starter-test에 기본적으로 포함된다. AssertJ의 장점 · 메서드 체이닝을 지원하여 깔끔하고 읽기 쉬운 테스트 코드를 작성 가능하다. · 타입별로 다양한 검증 메서드를 제공한다. - 개발자가 테스트를 하면서 필요하다고 상상할 수 .. 2021. 10. 30.
[JUnit] 오류 해결: java.lang.IllegalStateException: Failed to load ApplicationContext java.lang.IllegalStateException: Failed to load ApplicationContext JUnit으로 스프링 프로젝트를 테스트 하던 중 위와 같은 오류가 발생했다. 이러한 경우 테스트 클래스에 @WebAppConfiguration 어노테이션을 붙이면 해결할 수 있다. @WebAppConfiguration은 클래스 레벨 어노테이션이며, 스프링 프레임워크에서 웹 버전의 애플리케이션 컨텍스트(빈의 생성과 관계설정 등 제어를 담당하는IoC 컨테이너)를 생성할 때 사용한다. 출처 https://www.baeldung.com/spring-webappconfiguration 2021. 8. 10.
[Junit] MockMvc 객체란? MockMvc 객체란? · 서블릿 컨테이너의 구동 없이, 시뮬레이션된 MVC 환경에 모의 HTTP 서블릿 요청을 전송하는 기능을 제공하는 유틸리티 클래스다. 다음과 같이 MockMvc가 제공하는 메소드를 이용해서 스프링 웹 어플리케이션 프로젝트의 Controller를 테스트하는 코드가 있다. 이 코드를 살펴보며 MockMvc가 제공하는 메소드를 알아보자. import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigur.. 2021. 4. 29.
반응형