Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Application Event
- Application Argument
- HATEOAS
- WebApplication Type
- JsonSerializer
- Spring Security
- 리소스핸들러
- Application Runner
- AuthenticationPrincipal
- 다익스트라
- @Profile
- EnableAutoConfiguration
- 리소스 서버
- OAuth2
- 백준
- 스프링 부트
- application.properties
- cors
- HttpMessageConverters
- 외부설정
- 스프링부트
- 정적 리소스
- JPA
- 알고리즘
- 백트래킹
- 백기선
- 브루트포스
- webjar
- @ConfigurationProperties
- rest api
Archives
- Today
- Total
아카이브
[스프링 기반 REST API 개발] 테스트코드 리팩토링 - 파라미터 테스트 (junit-jupiter-params) 본문
Spring/스프링 기반 REST API 개발
[스프링 기반 REST API 개발] 테스트코드 리팩토링 - 파라미터 테스트 (junit-jupiter-params)
주멘이 2021. 1. 5. 23:27기존의 테스트 코드
@Test
void testFree() {
// 1
Event event = Event.builder()
.basePrice(0)
.maxPrice(0)
.build();
event.update();
assertThat(event.isFree()).isTrue();
// 2
event = Event.builder()
.basePrice(1000)
.maxPrice(0)
.build();
event.update();
assertThat(event.isFree()).isFalse();
// 3
event = Event.builder()
.basePrice(0)
.maxPrice(1000)
.build();
event.update();
assertThat(event.isFree()).isFalse();
}
@Test
void testOffline() {
// 1
Event event = Event.builder()
.location("역삼역")
.build();
event.update();
assertThat(event.isOffline()).isTrue();
// 2
event = Event.builder()
.build();
event.update();
assertThat(event.isOffline()).isFalse();
}
중복 코드 남발, 테스트 코드 짜기도 힘들다 --> 중복을 피하고, 파라미터를 넘겨줄 수 없을까?
params 의존성 추가
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
테스트 코드 리팩터링 (파라미터)
@ParameterizedTest
@MethodSource(value = "paramsForTestFree")
void testFree(int basePrice, int maxPrice, boolean isFree) {
Event event = Event.builder()
.basePrice(basePrice)
.maxPrice(maxPrice)
.build();
event.update();
assertThat(event.isFree()).isEqualTo(isFree);
}
private static Object[] paramsForTestFree() {
return new Object[]{
new Object[]{0, 0, true},
new Object[]{100, 0, false},
new Object[]{0, 100, false},
new Object[]{100, 100, false}
};
}
@ParameterizedTest
@MethodSource(value = "paramsForTestOffline")
void testOffline(String location, boolean isOffline) {
Event event = Event.builder()
.location(location)
.build();
event.update();
assertThat(event.isOffline()).isEqualTo(isOffline);
}
private static Object[] paramsForTestOffline() {
return new Object[]{
new Object[]{"강남", true},
new Object[]{null, false},
new Object[]{" ", false},
};
}
'Spring > 스프링 기반 REST API 개발' 카테고리의 다른 글
[스프링 기반 REST API 개발] Spring HATEOAS 적용 (0) | 2021.01.06 |
---|---|
[스프링 기반 REST API 개발] 입력 받을 수 없는 값의 경우 Bad Request (0) | 2021.01.05 |
[스프링 기반 REST API 개발] Bad Request 응답 본문 (Errors, JsonSerializer & @JsonComponent, BindingError&Validator ) (0) | 2021.01.05 |
[스프링 기반 REST API 개발] Event 생성 API, 테스트 코드 (0) | 2021.01.05 |
[스프링 기반 REST API 개발] Event 도메인 구현 (0) | 2021.01.05 |