Java

Java Faker 랜덤 값 생성

땍땍 2024. 11. 9. 14:15

테스트 코드 작성에 활용하기 위해 랜덤 값 생성과 관련된 라이브러리를 찾아보다 Java Faker 를 찾게 되었다.

다만, Java Faker은 다양한 언어의 정해진 형식 , 예를 들어 주소나 이름 등의 데이터를 생성해주는 것에 강점이 있는 라이브러리이기에 테스트 코드보다는 더미 데이터를 생성하는 과정에서 더 효과적으로 사용할 수 있을 것같다.

해당 라이브러리가 워낙 방대해 모든 것을 정리할 순 없지만, 자주 사용할 법한 것들을 위주로 작성하였다.

사용법이 정말 직관적이라 않아 굳이 공식 문서를 보지 않고도 사용할 수는 있겠지만, 필요할 경우 공식 문서를 찾아보자.

// Gradle
implementation 'com.github.javafaker:javafaker:1.0.2'

최신 업데이트가 2020년을 마지막으로 이어지지 않고 있기에 새로운 버전이 추가될 일이 있을까 싶긴 하지만, 필요하다면 아래 링크에서 최신 버전을 확인해보자.

https://mvnrepository.com/artifact/com.github.javafaker/javafaker

Faker 선언

Faker faker = new Faker();

랜덤한 알파벳 생성. 물음표의 갯수 만큼의 랜덤한 알파벳이 생성됨.

ex)

??? → abc

????? → abcde

    String a = faker.letterify("?????");

물음표가 아닌 다른 문자는 그대로 출력되기에 , 아래와 같이 설정하면 “ex:” 라는 문자는 고정한채, 랜덤한 알파벳을 생성할 수도 있음

    String a = faker.letterify("ex:?????");

랜덤한 숫자 생성. #의 갯수 만큼의 랜덤한 숫자가 생성됨.

위와 동일한 원리로 # 외의 다른 값들은 고정됨으로 이를 활용할 수 있음

String b = faker.numerify("####");

랜덤한 알파벳과 숫자를 동시에 생성

String c = faker.bothify("????####");

지정된 정규식 패턴에 맞는 문자열 생성

“[ ]” 에 생성할 문자를 , “{ }” 에 생성할 갯수를 작성하면된다.

# 10자리 영어만
String d = faker.regexify("[a-z]{10}");
# 10자리 영어와 숫자
String d = faker.regexify("[a-z0-9]{10}");
# 10자리 한국어만
String d = faker.regexify("[가-힣]{10}");
# 10자리 한국어와 일본어
String d = faker.regexify("[가-힣ぁ-んァ-ン]{10}");

이전 선언했던 Faker의 기본 설정은 영어이기에, 아래 코드에서 한국어나 다른 언어의 값을 생성하고 싶을 경우 아래와 같이 추가적적인 코드가 필요하다

# 한국어 설정
Faker faker = new Faker(new Locale("ko"));

랜덤 풀네임 생성 ( ex. 홍길동 )

String f = faker.name().fullName();

랜덤 이름 생성 ( ex. 길동 )

String f = faker.name().firstName();

랜덤 성 생성 ( ex. 홍 )

String f = faker.name().lastName();

랜덤 주소 생성

String g = faker.address().streetAddress();

랜덤 회사 이름 생성

String g = faker.company().name();

랜덤 전화번호 생성

String h = faker.phoneNumber().phoneNumber();

랜덤 이메일 생성

단, 위처럼 한국어로 설정했을 경우 홍길동@gmail.com 과 같이 생성된다는 점 유의

String h = faker.internet().emailAddress();

무작위 날짜 생성

Date j = faker.date().birthday();

무작위 단어 생성

String k = faker.lorem().word();

무작위 문장 생성

Stirng l = faker.lorem().sentence();

무작위 문단 생성

String m = faker.lorem().paragraph();

무작위 문자열 생성

맨 뒤 숫자를 조정하여 생성되는 문자열의 길이를 조정 할 수 있음

단, 영어로만 생성됨

faker.lorem().characters(10)