Java/Kotlin Spring 진영에서 테스트코드 혹은 실제와 비슷한 더미데이터를 생성할때 쓰는 라이브러리가 있다
[ 보통 테스트 코드에서 사용하는 Fixture나 대표/운영진분들이 투자자분들한테 실제와 같은 데이터로 시연화면을 보여주고 싶을때 사용 ]
그것은 아마 자바 대상혁(Java-Faker) 라이브러리일것이다..(너..롤하냐? 왜 기습숭배를..)
이 라이브러리의 시초는 루비이며, 거기서 파생되어 나온 프로젝트이다
( Maven Repository에서 무려 1833위인 라이브러리 )
인터넷에 몇몇 글들 혹은 개발 강의를 보면 이 라이브러리를 가져다 쓰는 곳을 볼 수 있다
나름 버전관리도 꽤 한 모습이다(0.18에서 왜 갑자기 1.0으로..?)
하지만 가장 최근 버전을 눌러보면
9개의 취약성을 갖고 있다는 것을 확인할 수 있다
간단한 공부용 프로젝트나 배포를 하지 않을 용도라면 사용해도.....아니다 안된다
그럼 대체제를 찾아보자
일단 하나의 라이브러리를 볼 때 3가지를 살펴봤다
1. maven repository(official - 공식)
2. github(periodic updates - 주기적인 업데이트)
3. docs(usage/support - 커뮤니티나 홈페이지를 통해 사용법을 보거나 지원을 받을 수 있는지)
목차(neck car)
Java-Faker
1. https://mvnrepository.com/artifact/com.github.javafaker/javafaker
2. https://github.com/DiUS/java-faker
3. X(2번의 README로 대체)
Maven Repository에서 무려 1833위인 라이브러리
하지만 가장 최신 업데이트는 4년 전인 2020년이다
최신버전의 취약성(or 취약점)은 9개나 된다
가장 마지막 업데이트는 3년 전이고, 커밋 수는 834개이다
Star 숫자는 무려 4700개다
공식문서를 따로 홈페이지를 파지 않고, Javadoc으로 하는 멋진 모습(칭찬)
추가로 자바 코드로 사용하는 방법, 데모 프로젝트도 준비되어 있다
또한 지원하는 Faker 종류도 다양했다
- Address
- Ancient
- Animal
- App
- Aqua Teen Hunger Force
- Artist
- Avatar
- Back To The Future
- Aviation
- Basketball
- Beer
- Bojack Horseman
- Book
- Bool
- Business
- ChuckNorris
- Cat
- Code
- Coin
- Color
- Commerce
- Company
- Crypto
- DateAndTime
- Demographic
- Disease
- Dog
- DragonBall
- Dune
- Educator
- Esports
- EnglandFootBall
- File
- Finance
- Food
- Friends
- FunnyName
- GameOfThrones
- Gender
- Hacker
- HarryPotter
- Hipster
- HitchhikersGuideToTheGalaxy
- Hobbit
- HowIMetYourMother
- IdNumber
- Internet
- Job
- Kaamelott
- LeagueOfLegends
- Lebowski
- LordOfTheRings
- Lorem
- Matz
- Music
- Name
- Nation
- Number
- Options
- Overwatch
- PhoneNumber
- Photography
- Pokemon
- Princess Bride
- Relationship Terms
- RickAndMorty
- Robin
- RockBand
- Shakespeare
- Sip
- SlackEmoji
- Space
- StarCraft
- StarTrek
- Stock
- Superhero
- Team
- TwinPeaks
- University
- Weather
- Witcher
- Yoda
- Zelda
그리고 우리에게 가장 중요한 locale. 한글도 지원하는 모습을 볼 수 있었다
- bg
- ca
- ca-CAT
- da-DK
- de
- de-AT
- de-CH
- en
- en-AU
- en-au-ocker
- en-BORK
- en-CA
- en-GB
- en-IND
- en-MS
- en-NEP
- en-NG
- en-NZ
- en-PAK
- en-SG
- en-UG
- en-US
- en-ZA
- es
- es-MX
- fa
- fi-FI
- fr
- he
- hu
- in-ID
- it
- ja
- ko
- nb-NO
- nl
- pl
- pt
- pt-BR
- ru
- sk
- sv
- sv-SE
- tr
- uk
- vi
- zh-CN
- zh-TW
하지만 결정적으로 취약점이 너무 많기때문에 2024년 하반기 기준으로는 Pass~!!
jFairy
1. https://mvnrepository.com/artifact/io.codearte.jfairy/jfairy
2. https://github.com/Devskiller/jfairy
3. https://devskiller.com/datafairy
두번째로는 jFairy가 있었다
나름 배포한 프론트페이지까지 있어서 오 꽤괜찮은데..? 싶었지만
사실 1버전대를 넘지 못했고, 2017년이 마지막 저장소로 푸시한 업데이트 날짜를 볼 수 있다
maven repository에서는 9607순위를 갖고 있다
그리고 jfairy 최신버전에서는 12개의 취약성이 발견된 것을 볼 수 있었다(멈춰~!!)
마지막으로 깃허브로 푸시한 날짜는 2년 전이지만, Release 날자를 보면 2018년이다
깃허브의 Star수는 740개
온라인으로 배포한 사이트를 2024년인 아직까지도 내리지 않는것을 보면 그래도 명맥을 유지하고 싶었나보다(최소한의 비용으로 호스팅을 하시는..!?)
추가로 Locale도 지원하는것 같았지만 몇 개 국가를 지원하는지는 정확히 깃허브 공식문서에서는 나와있지 않았다
mockneat
1. https://mvnrepository.com/artifact/net.andreinc/mockneat
2. https://github.com/nomemory/mockneat
jFairy는 공식문서라기보다 그냥 우리꺼로 만들면 이렇게 되는거 보여줄게요~하는 홈페이지 느낌이었다면 mockneat는 진짜로 공식문서 페이지가 존재한다
그리고 이름에도 알 수 있다시피 mock(가짜) neat(깔끔한) 뜻을 갖고 있다
마지막 업데이트가 2021년이다
maven repository에서의 순위 또한 54669위다
오..그래도 다른 라이브러리들에 비해 취약점이 1개뿐이다!!(ㅋㅋㅋ 기뻐해야되는거..?)
가장 마지막 업데이트는 2년 전이고, 릴리즈는 3년 전인 2021년이다
Star 수는 527개이다
오.. 멋진 아이콘도 갖고 있고, Documentation과 Tutorial도 갖고 있다!
사실 Documentation 링크로 들어가면 튜토리얼도 들어갈 수 있다
사용방법이 threadLocal static 객체에서 가져와서 사용하는 모습이라 좀 특이했다
찾아봤는데 한글은 지원안하는 모습이다
사실 이제 최종보스 2개가 남았다
개인취향에 따라 이 2개중에서 취사선택해서 프로젝트에 적용하면 될 것 같다
datafaker ✅
1. https://mvnrepository.com/artifact/net.datafaker/datafaker
2. https://github.com/datafaker-net/datafaker
3. https://www.datafaker.net/documentation/usage/
maven repository부터 살펴보자
설명을 보면 JavaFaker로부터 fork를 하여서 향상시킨 라이브러리라고 소개하고 있다
maven repository에서의 순위는 8427위! 높다
저장소의 가장 최신 업데이트는 2024년 7월이며, 버전은 2.3.1을 사용하고 있는 것을 알 수 있다
가장 최근버전의 라이브러리 또한 vulnerability report 결과 취약점이 없는 것을 볼 수 있다(그만큼 관리가 잘 되고 있다는 뜻)
깃허브 또한 가장 업데이트가 2일전이고.....(github actions가 깨졌는데..?ㅋㅋ)
Star 숫자는 1100개이다
3천개 쪼금 안된 커밋들이 있는 것을 볼 수 있다
깃허브 페이지 설명만 읽어도 친절함이 보인다. WOW
datefaker 2.x버전부터는 최소 자바17버전이 요구된다고 한다
만약 자바 17버전을 사용하지 않을거라면 1.x를 사용하면 된다고 한다. 1.x는 자바8로 빌드되어 있다고 한다 하지만 더 이상 유지되지 않을것이고 2.x로 업그레이드하는 것을 추천한단다
루비의 faker gem / 펄의 Data::Faker / Python의 faker 패키지 / PHP의 faker 패키지 / Javascript의 faker.js 라이브러리
와 비슷한 데이터 생성기 라이브러리라고 소개하고 있다
자바/코틀린/JShell, 심지어는 Expressions를 통해서 데이터를 생성하는 모습을 확인할 수 있었다
그리고 우리에게 중요한 한국어 지원..!
Java-Faker에서 파생되어 향상된 라이브러리이기때문에 ko locale도 지원하는 모습을 볼 수 있었다
그리고 Java / Kotlin 크...
난 코틀린을 주로 사용한다. 이렇게 공식적으로 코틀린 언어가 usage에 있으면 감동쓰
그리고 이렇게 각각 인스턴스마다 다른 언어로 설정해서, random을 돌릴 수 있나보다
지금까지 중에 가장 마음에 든 라이브러리이다
그럼 마지막으로 살펴볼 라이브러리는...
fixture-monkey ✅
1. https://mvnrepository.com/artifact/com.navercorp.fixturemonkey/fixture-monkey
2. https://github.com/naver/fixture-monkey
3. https://naver.github.io/fixture-monkey
무려 국산제품이다..! Naver에서 만든 Fixture 생산. 즉 테스트 전용 라이브러리같아보였다
마지막 업데이트 2024년 9월 11일...? 이 글을 작성하는게 9월 17일인데 추석 1주 전에 배포까지 하셨다구요..?
배포가 크시군요(드립...ㅈㅅ)
어차피 추석쯤에는 다들 개발을 멈출테고, 이름에서 알수있다시피 테스트에 주로 쓰이다보니까 prod코드를 건드리지는 않아서 통 크게 빨간날 전에 배포하셨나보다
물론 수요일이기때문에 목/금 버그 Support할 시간이 있긴 하셨겠다
2021년에 RC(Release Candidate)버전으로 배포된 것을 시작으로 현재 3년째 운영중인 프로젝트이다
깃허브로 들어와봤다. 가장 최근 업데이트가 19시간 전...? 아니 지금 추석인데요...?
링크와 문장수정(아마도 오타?)을 위해 빨간날에도 일하시는....... 네이버는 그런곳입니까..?ㄷㄷ
어쨌든 558개의 Star를 갖고 있다
소개를 보면 "Write Once, Test anywhere"라 써있는데... 이건
자바의 표어를 조금 베껴서 만든 것 같아보인다ㅋㅋ
그리고 대놓고 implementation이 아니라 testImplementation으로 표시한 것을 보면, datafaker와는 다르게 테스트에서 만들 fixture용도로만 사용할 수 있는 것 같아보인다
공식문서는 영어와 한글로 제공되며, Fixture Monkey에 대한 글을 주기적으로 모니터링하시고 Ariticles로 넣으시나보다 하하
내 글도 넣어주세요! >.<
그리고 docs도 살펴봤다
메인페이지에서 원숭이가 반겨준다
그리고 공식홈페이지에서 살짝 아쉬운 포인트들이 몇 개 있었다
UI 깨짐 이슈
아이콘좀 가운데로 해주고, box size도 알맞게 해주세요
그리고 특장점에 대한 설명이 box border바깥으로 나와있는 것을 볼 수 있다
scroll을 내부에 할 수 있게 하던가 아님 text-ellipsis을 적용하면 어떨까 싶다
아마 백엔드분들이 페이지를 만드신게 아닐까..... 킹리적 갓심을 가져본다
이러나저러나 내부 문서는 정말 깔끔하다
Java와 더불어 Kotlin도 사용방법을 볼 수 있는 모습
다만 전체 페이지에 Java / Kotlin이 나와있지는 않은 모습이었다
네이버형님들께는 아쉬운 얘기지만, 나는 개인적으로 datafaker의 공식문서가 더 깔끔해보였다
(내가 angular MAT-UI로 개발을 했었어서 그런가..?)
요약
나는 어떤 용도인지에 따라서 datafaker, fixture monkey 둘 중 하나를 사용할 것 같다
데모를 위한 프로젝트 데이터 생성시에는 datafaker를, test only일때는 fixture monkey로..!!
그리고 지극히 개인적으로는 datafaker쪽을 조금 더 써볼 것 같다
다음 이 관련 글을 써본다면 datafaker / fixture-monkey 사용후기를 써볼까 한다
긴 글 봐주셔서 감사합니다!!
댓글