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

时间:2013-08-30 12:05:05

标签: java unit-testing mockito

我是java的新手,必须测试类。

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

我想知道是否有办法自动生成该模拟对象,但不仅如此,如果可以使用某些任意值自动填充该对象的所有属性。

请问有人帮我吗?

我将在这里举一个例子,以确保我明白了......

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

class B {
int x;
C k;
}

class C {
String x;
int x;
}

我想模仿A类的一个对象。

我希望mockA对象具有所有可能字段的值,例如对于B类中的x String也是...

1 个答案:

答案 0 :(得分:13)

您可能正在寻找

MockitoRETURNS_DEEP_STUBS选项。更重要的是,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());