如何在java中使用伪数据创建对象?

时间:2018-04-23 06:00:00

标签: java unit-testing

假设我想创建一个包含假Person类数据的对象,手动它将花费太多时间,而Person类内部包含Parties类。 是否有任何简单的方法来使用虚假数据创建Object。 通过使用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;
    }
}

4 个答案:

答案 0 :(得分:0)

您可以使用java Faker:

def create
  @challenge.puns.create!(pun_params.merge(user_id: current_user.id))

  redirect_to @challenge
end

使用示例:

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

项目网站:http://dius.github.io/java-faker/

答案 1 :(得分:0)

如果您在测试中关注Parties,则无需创建Person数据。你可以像这样写:

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

答案 2 :(得分:0)

以下是一些常用于快速测试数据的技巧:

1)创建一个人对象作为基础(手动)。各种测试只需要修改部分数据,例如更改姓氏等等。

2)创建数据生成实用程序,例如FakePersonCreator。它可以使用固定字符串和随机数据的组合。编写一个生成一个人并让测试使用它的函数。

3)使用真实数据作为测试数据。您可以从实际程序运行中记录它,并将其导出到文件中。那你有两个选择:

  • 在测试运行中从文件中读取测试数据

  • 编写一个实用程序,生成构建测试的java代码 数据(人)根据您的数据文件

4)保持大部分测试数据(人)为空。让每个测试只设置需要检查的字段。

5)使用模拟框架(例如Mockito)来模拟测试数据。创建仅返回实际测试所需字段的模拟对象。

答案 3 :(得分:0)

最后,我通过在Java中使用PODAM库而没有手动交互,找到了一个假冒对象数据的解决方案。

我们可以使用Podam库来伪造对象的数据。

<强>依赖

int* p2 = new int[10]; // guaranteed to call the replacement in C++11.

<强>代码

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

参考:PODAM