Я использую faker с Java (https://mvnrepository.com/artifact/com.github.javafaker/javafaker/0.2), и у меня возникла проблема с генерацией разных данных в цикле с использованием функции. Вот мой код:
import com.github.javafaker.Faker;
import java.util.ArrayList;
import java.util.LinkedHashMap;
public class DataGenerator{
Faker faker = new Faker();
LinkedHashMap<String,ArrayList<String>> result = new LinkedHashMap<>();
public static void main(String[] args) throws Exception {
generatedata("firstname");
//generatedata("lastname");
for(String key : this.result.keySet())
{
System.out.println(key);
ArrayList<String> al = this.result.get(key);
for(String s : al)
System.out.println(s);
}
}
public void generatedata(String fieldType) throws Exception{
switch (fieldType.toLowerCase()){
case "firstname":
resultdata = generateInvalidData(faker.name().firstName());
break;
case "lastname":
resultdata = generateInvalidData(faker.name().lastName());
break;
}
result.put(fieldType.toLowerCase(), resultdata);
}
public ArrayList<String> generateNames(String fieldType) throws Exception{
ArrayList<String> resultdata = new ArrayList<>();
for (int j = 0; j < 5; j++) {
//valid data
resultdata.add(testData);
//UPPERCASE
resultdata.add(testData.toUpperCase());
}
return resultdata;
}
Здесь я пытаюсь сгенерировать имя, фамилию с другим количеством и комбинацией в методе / функции generateNames, но поскольку фейкер вызывается только один раз, который передается в качестве параметра, я получаю тот же набор данных.
Я не хочу вызывать содержимое generateNames в методе генерируемые данные, потому что, если я хочу добавить больше комбинаций, мне нужно скопировать и вставить все в каждом случае переключения, если добавлено больше случаев. Любая помощь приветствуется. Спасибо.
Он по-прежнему показывает те же данные.
есть ли возможность, что я могу передать класс имя() и метод имя в качестве параметров и вызвать новый экземпляр faker в методе generateInvalidData()?




почему бы не сделать что-то вроде
generateInvalidData(new Faker().name().firstName());, чтобы это был новый экземпляр объекта Faker каждый раз, когда вы берете имя, фамилию и так далее?