// lombok
annotationProcessor("org.projectlombok:lombok")
compile('org.projectlombok:lombok')
annotationProcessor : gradle 버전이 올라감에 따라 롬복설정이 변하였기에 설정해준다.
@Getter
@RequiredArgsConstructor
public class HelloResponseDto {
private final String name;
private final int amount;
}
@Getter
- 선언된 모든 필드의 get 메소드를 생성해준다 (getter 메소드를 내가 생성할 필요 없다)
@RequiredArgsConstructor
- 선언된 모든 final 필드가 포함된 생성자를 생성해준다.(final이 없는 필드는 생성하지 않는다.)
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class HelloResponseDtoTest {
@Test
public void 롬복_기능_테스트(){
String name = "test";
int amount = 1000;
HelloResponseDto dto = new HelloResponseDto(name,amount);
// assertThat
// assertj라는 테스트 검증 라이브러리의 검증 메소드이다.
// 검증하고자 하는 대상을 인자로 받고, 메소드 체이닝을 활용하여 isEqualTo 메소드를 이어서 사용할 수 있다.
// isEqualTo : a
assertThat(dto.getName()).isEqualTo(name);
assertThat(dto.getAmount()).isEqualTo(amount);
}
}
- JUnit의 assertThat이 아니라 assertj의 assertThat을 사용한다.
- assertj의 장점(JUnit과 비교하였을 때)
- CoreMatchers와 다르게 추가적 라이브러리가 필요하지 않다.
- 자동완성이 좀더 확실하게 지원된다.
- assertThat
- assertj라는 테스트 검증 라이브러리의 검증 메소드이다.
- 검증하고자 하는 대상을 인자로 받고, 메소드 체이닝을 활용하여 isEqualTo 메소드를 이어서 사용할 수 있다.
- isEqualTo
- ssertj의 동등 비교 메소드이다. assertThat의 인자값과 동일할 경우만 성공한다.
@GetMapping("/hello/dto")
public HelloResponseDto helloDto(@RequestParam("name") String name,
@RequestParam("amount") int amount) {
return new HelloResponseDto(name, amount);
}
- @RequestParam
- 외부에서 API로 넘긴 파라미터를 가져오는 어노테이션이다.
//jsonPath, is관련 라이브러리를 직접 import해줘야 한다 (intellij에서 제대로 import안해줌)
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.hamcrest.Matchers.is;
@Test
public void helloDto가_리턴된다() throws Exception {
String name = "hello";
int amount = 1000;
// param
// API 테스트에 사용될 요청 파리미터를 설정한다. String값만 허용된다.
// jsonPath
// JSON 응답값을 필드별로 검증할 수 있는 메소드이다.
// $를 기준으로 필드명을 명시한다. ($.name, $.amount와 같이)
mvc.perform(
get("/hello/dto")
.param("name", name)
.param("amount", String.valueOf(amount))
)
.andExpect(status().isOk())
.andExpect(jsonPath("$.name", is(name)))
.andExpect(jsonPath("$.amount", is(amount)));
}
- param
- API 테스트에 사용될 요청 파리미터를 설정한다. String값만 허용된다.- jsonPath
- JSON 응답값을 필드별로 검증할 수 있는 메소드이다.
- '$'를 기준으로 필드명을 명시한다. ($.name, $.amount와 같이)
열심히하세요~