728x90

스프링 9

AssertJ 간단 정리

AssertJ AssertJ는 자바에서 테스트 코드를 작성할 때 사용되는 서드파티 라이브러리 중 하나이다. (자매품으로 Hamcrest가 있다) 우리가 JUnit으로 단위 테스트 코드를 작성할 때 JUnit의 Assertions를 사용할 수도 있지만, AssertJ의 Assertions를 사용할 수 있다. AssertJ를 사용했을 때 장점으로는 아래와 같다. 자연스럽게 코드가 읽히는 가독성 메소드 체이닝을 통해 여러 조건에 대한 테스트를 이해하기 쉬운 형태로 작성 가능 테스트 실패 메시지가 자세히 나와 있어 원인을 파악하기 쉬움 상황에 맞는 다양한 검증(Assertion) 메소드 제공 이러한 장점으로 JUnit 공식 문서에서도 AssertJ와 같은 라이브러리 사용을 추천하고 있다. (출처: https:/..

스프링 컨트롤러 단위 테스트 - MockMvc 클래스 소개, 작동 원리

MockMvc 소개 org.springframework.test.web.servlet 패키지에 정의되어 있는 컨트롤러 테스트 용도의 클래스이다. 스프링 MVC 테스트의 시작점 역할(엔트리 포인트)을 하므로, MockMvc 객체를 통해 애플리케이션 배포 없이 컨트롤러에 요청을 보내고 응답 결과를 테스트할 수 있다. JUnit의 테스트 클래스에 @WebMvcTest를 적용하면 의존 자동 주입을 통해 MockMvc 객체를 획득, 사용할 수 있다. 클래스를 사용하는 문법은 아래와 같다. // 테스트 클래스 내부 @Autowired MockMvc mvc; @Test public void 컨트롤러_테스트() { mvc.perform(get("/주소")) .andExpect(status().isOk()) .andEx..

JUnit 4 테스트 진행 과정, 스프링 부트 테스트용 어노테이션

JUnit 4 테스트 진행 과정(생명 주기) JUnit으로 테스트를 진행할 때는 크게 다음과 같은 과정을 거친다. 개발자가 테스트 클래스를 정의 @BeforeClass(JUnit 5에서는 @BeforeAll) 어노테이션이 적용된 메소드 실행 - 클래스 전체 테스트 전에 딱 한 번 실행 테스트 클래스 객체 생성 @Before(JUnit 5에서는 @BeforeEach) 어노테이션이 붙은 메소드 실행 - 테스트 메소드 진행 전 선작업 필요한 경우 정의 @Test 어노테이션이 붙은 테스트 메소드 실행 테스트 결과 저장 @After(JUnit 5에서는 @AfterEach) 어노테이션이 붙은 메소드 실행 - 테스트 메소드 진행 후 다음 테스트에 영향 안 주도록 처리할 작업을 정의 각 테스트 메소드에 대해 3~7 반..

JUnit 간단 소개, JUnit 4 사용 예시

* 이 글은 이동욱 님이 집필하신 를 읽고 추가로 공부한 내용을 작성한 글입니다. 단위 테스트 단위 테스트란 테스트 주도 개발의 첫 번째 단계인, 기능 단위의 테스트 코드를 작성하는 것을 말한다. 단위 테스트를 통해 얻을 수 있는 이점으로는 아래와 같다. 개발 단계 초기에 문제 발견 / 빠른 피드백 웹 프로젝트에서 단위 테스트를 시행하지 않은 경우 서버를 재시작한 뒤(수십 초에서 1분 이상 소요) 테스트 도구를 통해 HTTP 요청을 진행한 뒤 출력 결과를 확인하는 과정을(System.out.println() 등) 반복해야 하지만, 단위 테스트를 시행한 경우 위와 같은 번거로운 작업을 굳이 하지 않아도 됨 코드 리팩토링, 라이브러리 업그레이드 등에 의한 변화에서 기존 기능이 잘 작동하는지 쉽게 확인 가능 ..

Lombok 사용법 간단정리

이번 글에서는 자바 클래스를 작성할 때 필요한 코드량을 줄여주는 라이브러리인 Lombok의 사용법에 대해 간략히 정리해보고자 한다.특별한 설명이 없는 한, 어노테이션의 적용 범위는 클래스이다.@Getter / @Setter클래스에 정의된 필드에 각각 getter, setter 메소드를 추가하는 역할을 한다. 특정 필드에 대한 getter, setter 메소드를 추가하고 싶은 경우 필드 위에 어노테이션을 적용해야 한다.    @EqualsAndHashCode클래스에 대한 equals 메소드, hashCode 메소드를 추가한다. of = {(필드명 배열)} 옵션을 통해 equals의 비교 조건을 설정할 수 있다. 예를 들어 of = {"name", "age"}가 옵션으로 부여된 경우 name과 age의 값이..

[참고] 왜 build.gradle의 dependencies 블록에서 Configuration을 메소드처럼 사용할 수 있을까?

dependencies 블록을 설정하는 모습을 보았을 때, 블록의 내용이 Project 객체의 dependencies 메소드로 전달됨을 알 수 있다. 예를 들어 dependencies 블록에서 implementation을 통해 라이브러리 의존성을 설정한다고 가정해보자. 그 모습이 dependencies로 전달되는 클로저에 연결된 객체의 implementation 메소드를 실행하는 것처럼 보여도, 실제로 클로저에 연결된 객체의 클래스인 DependencyHandler에는 implementation 메소드가 존재하지 않는다. 그러나 DependencyHandler와 Configuration은 서로 연관된 클래스임에는 분명하다. DependencyHandler의 add 메소드를 통해 Configuration ..

build.gradle 스크립트

* 스크립트 내용은 코틀린이 아닌, 그루비로 작성합니다. build.gradle 빌드 과정에서 프로젝트에 존재하는 build.gradle 스크립트를 실행하여 프로젝트에 필요한 설정을 적용한다. 이때 프로젝트에 필요한 설정이란, 소스 코드에서 쓰이는 라이브러리의 종류를 정의하고, 어떤 방법으로 라이브러리를 가져올 것인지를 말한다. 이번 글에서는 build.gradle 스크립트를 설정하기 위해 알아야 하는 것들에 대해 가볍게 다뤄보고자 한다. 플러그인 플러그인은 태스크를 묶어서 관리하는 단위이며, 특정 작업들과 관련된 태스크의 집합이다. 플러그인을 통해 빌드 기능을 확장하거나 특정 기능을 그레이들에 추가할 수 있다. build.gradle에 플러그인 정보를 추가하면 CLI를 통해 플러그인 안에 존재하는 태스..

그레이들 프로젝트 빌드 과정

그레이들 프로젝트 빌드 과정 기본적으로 그레이들 프로젝트를 빌드하기 위해서는 gradle build(또는 ./gradlew build) 명령어를 수행하면 된다. build라는 태스크를 통해 그레이들 프로젝트의 소스 코드를 컴파일하고, 테스트하고, 빌드까지 완료할 수 있다. build 태스크를 완료하는 데 총 3가지의 동작 과정이 존재한다. Initialization Configuration Execution 1. Initialization settings.gradle 스크립트를 통해 프로젝트의 정보를 수집하는 단계이다. (그레이들 버전이 5.0 이상인 경우 스크립트의 언어가 코틀린이므로 settings.gradle 대신 settings.gradle.kts 존재) 그레이들은 settings.gradle 스..

그레이들(Gradle) 소개

그레이들(Gradle) 소개 그레이들은 프로젝트를 빌드할 때 사용되는 툴이지만 빌드, 테스트, 배포 등 개발 과정 전반에 필요한 거의 모든 과정을 자동화하는 아주 강력한 툴이다. 특징으로는 이전에 사용되었던 툴인 Maven에 비해 처리 속도가 빠르고, Groovy 언어 기반의 스크립트를 통해 빌드 설정을 편하게 관리할 수 있다는 점이 있다. 그레이들 버전 5.0 이상부터는 스크립트 언어로 Kotlin을 지원하여 IDE에서 스크립트의 문법까지 체크 가능하다. 일반적으로 그레이들은 자바나 안드로이드 프로젝트를 빌드할 때 많이 사용되며, 그레이들을 통해 프로젝트에 필요한 라이브러리를 쉽게 다운받을 수 있고 각 라이브러리가 의존하는 라이브러리 또한 자동적으로 설치된다. 그레이들 프로젝트 구성 그레이들 8.6 버..

728x90