JUnit Mockito framework



我正在使用Mockito Framework学习Junit,我尝试在我的服务代码上编写测试用例: -

ChildClass childClass = (ChildClass)(employeeDao.callMethod().getClassRef());

junit测试案例: -

ChildClass childClass = new ChildClass();
Mockito.when(employeeDao.callMethod().getClassRef()).thenReturn(childClass);

但是获得java.lang.nullpointerexception

然后尝试以两个单独的陈述进行分配方法,例如: -

ChildClass childClass = new ChildClass();
Mockito.when(employeeDao.callMethod()).thenReturn(employeeInstance);
Mockito.when(employeeInstanceMocked.getClassRef()).thenReturn(childClass);

,但由于Mockito而导致的对象施放异常仍在返回superClassObject,但代码将施放到ChildClass对象中。当前的Java代码与Junit Test案例测试100%兼容,或者我缺少某个点。

您可以使用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());

但是,如文档中所述,由于违反了塞米特法律,这是不良的实践。

当需要模拟对象时,您需要使用模拟的类。如果您想要实际班级的行为,例如您尝试使用间谍的DAO的引用。

junit:

ChildClass childClass = Mockito.spy(new ChildClass());

相关内容

  • 没有找到相关文章

最新更新