728x90
스프링 기반 REST API 개발
2. 이벤트 생성 API 개발
포스팅 참조 정보
GitHub
공부한 내용은 GitHub에 공부용 Organizations에 정리 하고 있습니다
해당 포스팅에 대한 내용의 GitHub 주소
실습 내용이나 자세한 소스코드는 GitHub에 있습니다
포스팅 내용은 간략하게 추린 핵심 내용만 포스팅되어 있습니다
https://github.com/freespringlecture/spring-rest-api-study/tree/chap02-09_parameter_test
해당 포스팅 참고 인프런 강의
https://www.inflearn.com/course/spring_rest-api/dashboard
실습 환경
- Java Version: Java 11
- SpringBoot Version: 2.1.2.RELEASE
9. Event 생성 API 구현: 매개변수를 이용한 테스트
테스트 코드 리팩토링
- 테스트에서 중복 코드 제거
- 매개변수만 바꿀 수 있으면 좋겠는데?
- JUnitParams
JUnitParams
https://github.com/Pragmatists/JUnitParams
- 파라메터를 사용한 테스트 코드를 만들기 쉽게 해주는 라이브러리
- 원래 JUnit은 메서드 파라메터를 가질 수 없음
- 메서드 파라메터에 들어갈 값들을 정의하는 방법을 제공
<dependency> <groupId>pl.pragmatists</groupId> <artifactId>JUnitParams</artifactId> <version>1.1.1</version> <scope>test</scope> </dependency>
@RunWith
설정
@RunWith(JUnitParamsRunner.class)
EventTest 테스트 코드 리팩토링
package me.freelife.rest.events;
import junitparams.JUnitParamsRunner;
import junitparams.Parameters;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.assertj.core.api.Assertions.assertThat;
@RunWith(JUnitParamsRunner.class)
public class EventTest {
...
@Test
@Parameters
public void testFree(int basePrice, int maxPrice, boolean isFree) {
// Given
Event event = Event.builder()
.basePrice(basePrice)
.maxPrice(maxPrice)
.build();
// When
event.update();
// Then
assertThat(event.isFree()).isEqualTo(isFree);
}
//parametersFor prefix가 테스트 메서드를 찾아서 자동으로 파라메터로 사용을 해줌
private Object[] parametersForTestFree() {
return new Object[] {
new Object[] {0, 0, true},
new Object[] {100, 0, false},
new Object[] {0, 100, false},
new Object[] {100, 200, false}
};
}
@Test
@Parameters
public void testOffline(String location, boolean isOffline) {
// Given
Event event = Event.builder()
.location(location)
.build();
// When
event.update();
// Then
assertThat(event.isOffline()).isEqualTo(isOffline);
}
private Object[] parametersForTestOffline() {
return new Object[] {
new Object[] {"강남", true},
new Object[] {null, false},
new Object[] {" ", false}
};
}
}
728x90
'개발강의정리 > Spring' 카테고리의 다른 글
[스프링 기반 REST API 개발] 3-2. 스프링 HATEOAS 적용 (0) | 2020.01.01 |
---|---|
[스프링 기반 REST API 개발] 3-1. 스프링 HATEOAS 소개 (0) | 2019.12.28 |
[스프링 기반 REST API 개발] 2-8. Event 생성 API 구현: 비즈니스 로직 적용 (0) | 2019.12.28 |
[스프링 기반 REST API 개발] 2-7. Event 생성 API 구현: Bad Request 응답 본문 만들기 (0) | 2019.12.28 |
[스프링 기반 REST API 개발] 2-6. Event 생성 API 구현: Bad Request 처리하기 (0) | 2019.12.28 |
댓글