728x90
반응형
오랜만에 자바-스프링 프로젝트를 진행하면서 테스트 케이스상 필요한 given 객체들을 만들어내야하는데, 각 속성값들을 직접 다 지정해줘야하는게 너무 불편했다. 파이썬-장고 계열에서는 Model Bakery를 사용했었는데, 자바에서는 그런 라이브러리를 사용한 기억이 없어서 라이브러리를 찾아보기로 했다!
Instancio
https://mvnrepository.com/artifact/org.instancio/instancio-junit
instancio를 maven repository에서 import 해와서 build.gradle에 포함시켰다.
간단한 사용법은 예시는 아래와 같다. user-guide를 5~10분만 보면 바로 어떤 건지 알 수 있다.
https://www.instancio.org/user-guide/
given 조건 예시
//상품에 관련한 객체들을 만들어본다.
// given
GoodsDto requestGoods = Instancio.of(GoodsDto.class).create();
List<GoodsEntity> goodsInDB =
//List로 만들고 싶을땐 .ofList() 메서드를 사용한다.
Instancio.ofList(GoodsEntity.class)
.size(5)
//set, field 메서드를 사용한다. 만들고자하는 객체에 getter가 반드시 있어야한다.
.set(field(GoodsEntity::getCode), requestGoods.getCode())
.set(field(GoodsEntity::getName), requestGoods.getName())
.set(field(GoodsEntity::getPrice), requestGoods.getPrice())
.create();
// 객체를 1개만 만들고 싶고, 따로 field들을 지정하지 않아도 타입에 맞게 자동으로 지정하고 싶으면 .of() 메서드를 사용한다.
GoodsDto requestGoodsDto = Instancio.of(GoodsDto.class).create();
728x90
반응형
'Programming-[Backend] > Java' 카테고리의 다른 글
자바 기초 강의 정리 - 1. 기초 ~ 함수, 제너릭까지 (0) | 2024.05.26 |
---|---|
자바 linter, 포매팅 처리 : spotless, googlejavaformat, commit시 자동 적용 (0) | 2024.05.26 |
[TIL][작성Java - @RequestBody null 문제: jackson, @NotNull, @NoArgsConstructor (0) | 2023.06.11 |
[TIL] 클래스 내 private 메서드 임시 테스트 @PostConstruct, Column 이름 예약어 escape 처리 (0) | 2023.05.18 |
자바 입력 : InputStream, InputStreamReader, BufferedStream, Scanner (0) | 2022.06.02 |