Java 生成填充有任意值的模拟对象

Java 生成填充有任意值的模拟对象,java,unit-testing,mockito,Java,Unit Testing,Mockito,我是java新手,必须测试类 对于一个非常复杂的类,我需要一个mock对象,其中一些属性是对象,而对象又有其他对象,所以对我来说手动生成一个mock对象需要做很多工作 我想知道是否有一种方法可以自动生成该模拟对象,但不仅仅是这样,还可以自动用一些任意值填充该对象的所有属性 有人能帮我一下吗 我将在这里举个例子,以确保我清楚地表达了自己 class A { int a; B b; C c; } class B { int x; C k; } class C { String x; int x;

我是java新手,必须测试类

对于一个非常复杂的类,我需要一个mock对象,其中一些属性是对象,而对象又有其他对象,所以对我来说手动生成一个mock对象需要做很多工作

我想知道是否有一种方法可以自动生成该模拟对象,但不仅仅是这样,还可以自动用一些任意值填充该对象的所有属性

有人能帮我一下吗

我将在这里举个例子,以确保我清楚地表达了自己

class A {
int a;
B b;
C c;
}

class B {
int x;
C k;
}

class C {
String x;
int x;
}
我想模拟一个类的对象

我希望mockA对象对所有可能的字段都有值,例如,B类中的x字符串也是…

选项可能就是您要查找的。此外,默认情况下,mockito似乎经常返回合理的值

链接文档中的用法示例,供快速参考:

Foo mock = mock(Foo.class, RETURNS_DEEP_STUBS);

// note that we're stubbing a chain of methods here: getBar().getName()
when(mock.getBar().getName()).thenReturn("deep");

// note that we're chaining method calls: getBar().getName()
assertEquals("deep", mock.getBar().getName());

明确一点,你想让你的mock对象返回其他mock对象吗?是的,我想要一个最终的对象,为所有属性填充任意值,包括嵌套对象和这些对象中的嵌套对象等等,直到它到达基元类型属性如果你知道我的意思,我的英语也很差,不仅仅是我的java知识…为什么要为字段设置值?当然,重要的是调用mock的方法时会发生什么?好的,我会研究一下,希望它能工作,然后我会回来更新。谢谢。所以,我做了一个测试,似乎Mockito不能模拟期末班?!?也不是原始类型。至少我得到的是一条错误消息。怎么办?因为我需要模拟一个最终类。我在一个非最终类上进行了测试,它也可以工作,但所有字段都是空的,所以我会在一瞬间手动完成。有一种方法可以自动填充这些值,就像我在问题中说的那样?我在我的课堂上使用了RETURNS\u DEEP\u STUBS的例子。是的,模拟期末课程需要更重的机器。Mockito通常对这些问题不屑一顾,说设计是罪魁祸首。为此,请查看Powermock:。它几乎可以模拟所有东西:最终类、静态、新调用等等。不过,我从来没有听说过模拟字段访问。使用getter的另一个原因。至于模仿原语。。。他们没有行为,你想实现什么?我需要那个模拟来测试类中的方法(它是关于模拟查询的结果),我会花一整天的时间来填充这个模拟的字段,因为它是一个巨大的类。谢谢你的帮助。