본문 바로가기
320x100
320x100

Java/Kotlin Spring 진영에서 테스트코드 혹은 실제와 비슷한 더미데이터를 생성할때 쓰는 라이브러리가 있다

[ 보통 테스트 코드에서 사용하는 Fixture나 대표/운영진분들이 투자자분들한테 실제와 같은 데이터로 시연화면을 보여주고 싶을때 사용 ]

 

그것은 아마 자바 대상혁(Java-Faker) 라이브러리일것이다..(너..롤하냐? 왜 기습숭배를..)

이 라이브러리의 시초는 루비이며, 거기서 파생되어 나온 프로젝트이다

Java Faker

( Maven Repository에서 무려 1833위인 라이브러리 )

인터넷에 몇몇 글들 혹은 개발 강의를 보면 이 라이브러리를 가져다 쓰는 곳을 볼 수 있다

버전

나름 버전관리도 꽤 한 모습이다(0.18에서 왜 갑자기 1.0으로..?)

하지만 가장 최근 버전을 눌러보면

Java Faker 최신버전
9개의 취약성을 갖고 있는 라이브러리

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로 대체)

 

Java Faker
Maven Repository

Maven Repository에서 무려 1833위인 라이브러리

하지만 가장 최신 업데이트는 4년 전인 2020년이다

Vulnerabilities

최신버전의 취약성(or 취약점)은 9개나 된다

Java-Faker Github

가장 마지막 업데이트는 3년 전이고, 커밋 수는 834개이다

Star 숫자는 무려 4700개다

Github

공식문서를 따로 홈페이지를 파지 않고, 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

3번 링크

두번째로는 jFairy가 있었다

나름 배포한 프론트페이지까지 있어서 오 꽤괜찮은데..? 싶었지만

Maven Repository

사실 1버전대를 넘지 못했고, 2017년이 마지막 저장소로 푸시한 업데이트 날짜를 볼 수 있다

maven repository에서는 9607순위를 갖고 있다

jfrairy 최신버전

그리고 jfairy 최신버전에서는 12개의 취약성이 발견된 것을 볼 수 있었다(멈춰~!!)

Github

마지막으로 깃허브로 푸시한 날짜는 2년 전이지만, Release 날자를 보면 2018년이다

깃허브의 Star수는 740개

Github

온라인으로 배포한 사이트를 2024년인 아직까지도 내리지 않는것을 보면 그래도 명맥을 유지하고 싶었나보다(최소한의 비용으로 호스팅을 하시는..!?)

추가로 Locale도 지원하는것 같았지만 몇 개 국가를 지원하는지는 정확히 깃허브 공식문서에서는 나와있지 않았다

 

mockneat

1. https://mvnrepository.com/artifact/net.andreinc/mockneat

2. https://github.com/nomemory/mockneat

3. https://www.mockneat.com/

 

jFairy는 공식문서라기보다 그냥 우리꺼로 만들면 이렇게 되는거 보여줄게요~하는 홈페이지 느낌이었다면 mockneat는 진짜로 공식문서 페이지가 존재한다

그리고 이름에도 알 수 있다시피 mock(가짜) neat(깔끔한) 뜻을 갖고 있다

maven repository

마지막 업데이트가 2021년이다

maven repository에서의 순위 또한 54669위다

mockneat 최신버전

오..그래도 다른 라이브러리들에 비해 취약점이 1개뿐이다!!(ㅋㅋㅋ 기뻐해야되는거..?)

mockneat Github

가장 마지막 업데이트는 2년 전이고, 릴리즈는 3년 전인 2021년이다

Star 수는 527개이다

mockneat github

오.. 멋진 아이콘도 갖고 있고, Documentation과 Tutorial도 갖고 있다!

Docs

사실 Documentation 링크로 들어가면 튜토리얼도 들어갈 수 있다

Docs

사용방법이 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부터 살펴보자

maven repository

설명을 보면 JavaFaker로부터 fork를 하여서 향상시킨 라이브러리라고 소개하고 있다

maven repository에서의 순위는 8427위! 높다

저장소의 가장 최신 업데이트는 2024년 7월이며, 버전은 2.3.1을 사용하고 있는 것을 알 수 있다

maven repository

가장 최근버전의 라이브러리 또한 vulnerability report 결과 취약점이 없는 것을 볼 수 있다(그만큼 관리가 잘 되고 있다는 뜻)

Github

깃허브 또한 가장 업데이트가 2일전이고.....(github actions가 깨졌는데..?ㅋㅋ)

Star 숫자는 1100개이다

3천개 쪼금 안된 커밋들이 있는 것을 볼 수 있다

Github

깃허브 페이지 설명만 읽어도 친절함이 보인다. WOW

datefaker 2.x버전부터는 최소 자바17버전이 요구된다고 한다

만약 자바 17버전을 사용하지 않을거라면 1.x를 사용하면 된다고 한다. 1.x는 자바8로 빌드되어 있다고 한다 하지만 더 이상 유지되지 않을것이고 2.x로 업그레이드하는 것을 추천한단다

루비의 faker gem / 펄의 Data::Faker / Python의 faker 패키지 / PHP의 faker 패키지 / Javascript의 faker.js 라이브러리

와 비슷한 데이터 생성기 라이브러리라고 소개하고 있다

여러 usage

자바/코틀린/JShell, 심지어는 Expressions를 통해서 데이터를 생성하는 모습을 확인할 수 있었다

그리고 우리에게 중요한 한국어 지원..!

datafaker github

Java-Faker에서 파생되어 향상된 라이브러리이기때문에 ko locale도 지원하는 모습을 볼 수 있었다

docs

그리고 Java / Kotlin 크...

난 코틀린을 주로 사용한다. 이렇게 공식적으로 코틀린 언어가 usage에 있으면 감동쓰

mutliple locale

그리고 이렇게 각각 인스턴스마다 다른 언어로 설정해서, 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 생산. 즉 테스트 전용 라이브러리같아보였다

maven repository

마지막 업데이트 2024년 9월 11일...? 이 글을 작성하는게 9월 17일인데 추석 1주 전에 배포까지 하셨다구요..?

배포가 크시군요(드립...ㅈㅅ)

어차피 추석쯤에는 다들 개발을 멈출테고, 이름에서 알수있다시피 테스트에 주로 쓰이다보니까 prod코드를 건드리지는 않아서 통 크게 빨간날 전에 배포하셨나보다

물론 수요일이기때문에 목/금 버그 Support할 시간이 있긴 하셨겠다

2021년에 RC(Release Candidate)버전으로 배포된 것을 시작으로 현재 3년째 운영중인 프로젝트이다

Github

깃허브로 들어와봤다. 가장 최근 업데이트가 19시간 전...? 아니 지금 추석인데요...?

링크와 문장수정(아마도 오타?)을 위해 빨간날에도 일하시는....... 네이버는 그런곳입니까..?ㄷㄷ

어쨌든 558개의 Star를 갖고 있다

fixture monkey github

소개를 보면 "Write Once, Test anywhere"라 써있는데... 이건

WORA

자바의 표어를 조금 베껴서 만든 것 같아보인다ㅋㅋ

 

github

그리고 대놓고 implementation이 아니라 testImplementation으로 표시한 것을 보면, datafaker와는 다르게 테스트에서 만들 fixture용도로만 사용할 수 있는 것 같아보인다

Github

공식문서는 영어와 한글로 제공되며, Fixture Monkey에 대한 글을 주기적으로 모니터링하시고 Ariticles로 넣으시나보다 하하

내 글도 넣어주세요! >.<

 

그리고 docs도 살펴봤다

fixture monkey

메인페이지에서 원숭이가 반겨준다

그리고 공식홈페이지에서 살짝 아쉬운 포인트들이 몇 개 있었다

UI 깨짐 이슈

아이콘

아이콘좀 가운데로 해주고, box size도 알맞게 해주세요

 

설명이 box 바깥으로..

그리고 특장점에 대한 설명이 box border바깥으로 나와있는 것을 볼 수 있다

scroll을 내부에 할 수 있게 하던가 아님 text-ellipsis을 적용하면 어떨까 싶다

아마 백엔드분들이 페이지를 만드신게 아닐까..... 킹리적 갓심을 가져본다

docs

이러나저러나 내부 문서는 정말 깔끔하다

docs

Java와 더불어 Kotlin도 사용방법을 볼 수 있는 모습

docs

다만 전체 페이지에 Java / Kotlin이 나와있지는 않은 모습이었다

네이버형님들께는 아쉬운 얘기지만, 나는 개인적으로 datafaker의 공식문서가 더 깔끔해보였다

(내가 angular MAT-UI로 개발을 했었어서 그런가..?)

 

 

요약

나는 어떤 용도인지에 따라서 datafaker, fixture monkey 둘 중 하나를 사용할 것 같다

데모를 위한 프로젝트 데이터 생성시에는 datafaker를, test only일때는 fixture monkey로..!!

그리고 지극히 개인적으로는 datafaker쪽을 조금 더 써볼 것 같다

다음 이 관련 글을 써본다면 datafaker / fixture-monkey 사용후기를 써볼까 한다

 

긴 글 봐주셔서 감사합니다!!

320x100

댓글