테스트 코드를 작성하는데, 테스트에 필요한 데이터들을 일일히 넣어줘야 해서 이 부분을 어떻게 편리하게 할 수 있을까 찾아보다가 네이버에서 만든 오픈소스인 Fixture Monkey
라는 것을 알게 되었습니다.
Fixture Monkey는 제멋대로인 원숭이여서 아무 값이나 만들어서 쥐어줍니다.
09:51:28.111 [main] INFO c.g.d.d.s.BrowseDiaryServiceTest - 뗀ᢕ葁ᥒ밵ꛓ槽鰘˧꤭ᢢ⣋킨ᬤ舝᎖ꆤ矨빻珿盅䔮돧ꭢ輑鲱㾏늌⾷嬬쮋헖ⅉ꼐솓魜벷쓯佼ῲ쇼鱯쏮꜉䝤逾쏑Ŕ㣪ㄲ鷙坪▊憵諜㗑게펳焌郡ᘚ叜槨第錙쒳➐❽铿鼡㤯䣾咱艘ኂ쩡뺔▊灅፦䚙ﭲ귑맅巺쾄娣扟쮒獵ᆈ橊ᥒພꠟ崐ὅ흐癦ವ傎み༚픴脟짻卝䐆罯槤晪溘頣㢾Ȫ뜓恕鉫ḏႺ㨥⭀倕ꃖ墶鿻匶䄘鈒〷豚䕾ݹ䔄བ煐覎낹Ȭ䡚薄낟-肽뗛玎넉㥿쩯椥ꏻㆋ⪃㷇垅뭩볓䏬㊥○㯑鞌驫挘돲麋ꟓ瓏곎轫簛艄럆꿱훐懔淑ᣑ꒘ﯺ橅ョ旮翰㒙ꅺ콶ᬇ龣蹖䂪삋蚴缘第洁Ŭ≚⫊ᔃ궸㧑쀥㘦擔䦵쑌嶞兓舃藩ﺿޏ䙥ꑖ熉诛ꖨ➼⽹㏣疜Ԉ蒱䳈浺䋁漢稐献碖튽緕㈞讷沎캒枹㤂㮴猞㳺饆윧⾵퐦
09:51:28.186 [main] INFO c.g.d.d.s.BrowseDiaryServiceTest - 鲳璆殚휗㥯铦巎鑕亖槐䰣햔셂票쎤靂♾杆ℌ鉾㿼馣k鼕ᬣף
09:51:28.196 [main] INFO c.g.d.d.s.BrowseDiaryServiceTest - ㎧Ꝙ᳔ᄚ좍搥䂼䀌膣獇嵵譴⏩䧰롪⢛獖瞞䑘帾护㔳ꆵ⩜딘필嬭퓣殮퀤
09:51:28.212 [main] INFO c.g.d.d.s.BrowseDiaryServiceTest - 瑷詒₲惫쓒ڭ퇏⫱ᥐ墸톏砕谔
09:51:28.232 [main] INFO c.g.d.d.s.BrowseDiaryServiceTest - 缬時퍞Ɀ놆ꁇᯄ兽魬⍨ꚫ舔纠柱쭕这꿣⏦䣮泋蒏鰝脋ꀈ发ѩ┊馸
09:51:28.253 [main] INFO c.g.d.d.s.BrowseDiaryServiceTest - 컘匫㲃䃿癱묁ໄ횇陣띗䭜鵪浖㶵쥦甿랝譤洣
09:51:28.295 [main] INFO c.g.d.d.s.BrowseDiaryServiceTest - 棍薇庄ᙁ襹塆㵁땡踸슱叼싒긯椊ퟌ俊簇⚹�㌬ƀ쯰
09:51:28.317 [main] INFO c.g.d.d.s.BrowseDiaryServiceTest - 㫰г苽蒺汔퀼糥南⾟矜詓ᱹᝡ哯ꐸ白
09:51:28.336 [main] INFO c.g.d.d.s.BrowseDiaryServiceTest - 曉粭铒╔꼘ꝥ幧勱툼暬猉⨟囵⸌椁腜쥫聳嗠鵶우㹯Ӆ嫩칕∈욡漭勉ꛯベꬿ
09:51:28.353 [main] INFO c.g.d.d.s.BrowseDiaryServiceTest - 朑稔⪭睂郧㾛譹놨फ躍ඤ甗憈욥⍍ﴧ
09:51:28.364 [main] INFO c.g.d.d.s.BrowseDiaryServiceTest - 跛٧咣䂅챔㓩㰳ﭶ暠뉄✲㤒蠢져흡ছÌꋪ㘾쏻һ
09:51:28.429 [main] INFO c.g.d.d.s.BrowseDiaryServiceTest - 謣뒬떡巖䞽ह
이런식으로 정말 랜덤이죠.
사용 방법은 다음과 같습니다.
- 원숭이에게 '어떻게' 객체들을 만들어야 하는지 선언 해주기
FixtureMonkey fixtureMonkey = FixtureMonkey.builder()
.objectIntrospector(BuilderArbitraryIntrospector.INSTANCE)
.build();
이 경우 BuilderArbitraryIntrospector
를 사용했는데, 이 뜻은 Builder
로 객체들을 만들어 달라는 뜻입니다.
이 외의 방법들이 있으니 docs를 참고하시길 바랍니다.
- 원숭이에게 달라고 요청하기
.gitMeOne()
으로 하나만 달라고 요청할 수도 있고,.giveMe()
로 여러 개 요청하거나.giveMeBuilder()
를 사용하여 커스텀된 랜덤 객체를 생성할 수도 있습니다.
// 하나만 달라고 요청하기
Member member = fixtureMonkey.giveMeOne(Member.class);
// 커스텀된 랜덤 객체를 하나 달라고 요청하기
Member member = fixtureMonkey.giveMeBuilder(Member.class)
.set("currentColorCode", new ColorCode())
.sample();
// 이 때, sampleList()를 사용해서 만드는 개수도 지정해 줄 수 있다.
List<Diary> diaries = fixtureMonkey.giveMeBuilder(Diary.class)
.set("member", member)
.set("conditionLevel", fixtureMonkey.giveMeOne(ConditionLevel.class))
.sampleList(20);
제멋대로인 원숭이와 정말 얘기하는 느낌이 나는 메서드로 이뤄져있어 사용하는 데 재미있었고,
한국에서 만든 오픈 소스이다보니 docs가 한국어로 되어있어 읽기가 매우 편해 더 좋았습니다.
'프로젝트 > 프로젝트 과정' 카테고리의 다른 글
GlobalExceptionHandler와 ExceptionHandlingFilter의 차이점 (0) | 2024.09.19 |
---|---|
[실패 2회차] Ollama를 이용한 코드 리뷰 봇 만들기 (0) | 2024.09.07 |
[실패] AWS Lambda 환경에서 Ollama를 이용한 코드 리뷰 봇 만들기 (2) | 2024.09.03 |
[잔디일기] 랜덤 값 만들기 (0) | 2024.07.28 |
깃허브 Organigation 레포지토리 복구하기 (2) | 2024.07.23 |