Как создать объект с поддельными данными в Java?

Предположим, что если я хочу создать объект с поддельными данными для класса Person, вручную. Это займет слишком много времени, а класс Person внутри содержит класс Parties. Есть ли простые способы создать объект с поддельными данными. Используя mockito, мы можем создать объект, но опять же, вручную подделать данные сложно.

class Person {
    int age;
    ArrayList<Parties> parties;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public ArrayList<Parties> getParties() {
        return parties;
    }

    public void setParties(ArrayList<Parties> parties) {
        this.parties = parties;
    }
}


class Parties {
    private int date, month, year;

    public int getDate() {
        return date;
    }

    public void setDate(int date) {
        this.date = date;
    }

    public int getMonth() {
        return month;
    }

    public void setMonth(int month) {
        this.month = month;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
6 040
4

Ответы 4

Вы можете использовать java Faker:

<dependency>
    <groupId>com.github.javafaker</groupId>
    <artifactId>javafaker</artifactId>
    <version>0.12</version>
</dependency>

Пример использования:

Faker faker = new Faker();

String name = faker.name().fullName(); // Miss Samanta Schmidt
String firstName = faker.name().firstName(); // Emory
String lastName = faker.name().lastName(); // Barton

String streetAddress = faker.address().streetAddress(); // 60018 Sawayn Brooks Suite 449

Сайт проекта: http://dius.github.io/java-faker/

faker предназначен для создания поддельных данных, но для создания объекта с поддельными данными для класса требуется много ручного взаимодействия.

BALA 23.04.2018 08:13

Не совсем, вы просто пишете цикл для заполнения тех объектов, которые вам нужны.

span 23.04.2018 08:26

Вам не нужно создавать данные Parties, если вы ориентируетесь на Person в своих тестах. Вы всегда можете написать так:

Mockito.doReturn(new ArrayList()).when(your-mocked-person-object.getParties());

Создавайте объект с поддельными данными без ручного вмешательства. Если я использую mockito, мне снова придется подделывать все обязательные поля. Вместо этого есть способы создать объект с поддельными данными.

BALA 23.04.2018 08:11

Вот несколько приемов, которые часто используются для быстрых тестовых данных:

1) Создайте объект одного человека в качестве базы (вручную). Различные тесты нуждаются только в изменении части данных, например, при изменении фамилии и т. д.

2) Создайте утилиту генерации данных, например FakePersonCreator. Он может использовать комбинацию фиксированных строк и случайных данных. Напишите функцию, которая генерирует человека, и пусть тесты будут ее использовать.

3) Используйте реальные данные в качестве тестовых данных. Вы можете записать его из реального запуска программы и экспортировать в файл. Тогда у вас есть два варианта:

  • Прочтите тестовые данные из файла при тестовом запуске

  • Напишите утилиту, которая генерирует java-код, который строит тест. данные (лицо) согласно вашему файлу данных

4) Держите большую часть ваших тестовых данных (человек) пустыми. Каждый тест должен устанавливать только те поля, которые необходимо проверить.

5) Используйте фреймворк для имитации (например, Mockito), чтобы имитировать тестовые данные. Создавайте фиктивные объекты, которые возвращают только те поля, которые действительно необходимы для тестирования.

Наконец, я нашел решение для подделки данных объекта из класса с помощью библиотеки PODAM на Java без ручного взаимодействия.

Мы можем использовать библиотеку Podam для подделки данных для объекта.

Зависимость

<dependency>
        <groupId>uk.co.jemos.podam</groupId>
        <artifactId>podam</artifactId>
        <version>7.1.0.RELEASE</version>
</dependency>

Код

PodamFactory factory = new PodamFactoryImpl();
Person myPojo = factory.manufacturePojo(Person.class);

Ссылка: PODAM

Другие вопросы по теме