【发布时间】:2016-05-30 23:31:21
【问题描述】:
我是 Java 世界的新手,但很难理解为什么我不能存根模拟对象的方法...
@RunWith(MockitoJUnitRunner.class)
public class ChildBLLIT extends BaseInteractorIT {
@InjectMocks
private ChildBLL ChildBLL = Mockito.mock(ChildBLL.class);
@Before
public void setUp() {
ChildBLL.engine = engineMock;
}
/**
* Test of getZipStatistics method, of class ChildBLL.
*/
@Test
public void testGetZipStatistics() {
final String testZipStatisticsText = "DummyZipStatistics";
//This method will throw the null pointer exception
when(ChildBLL.engine.getZIPStatistics()).thenReturn(testZipStatisticsText);
ChildBLL.getZipStatistics();
verify(ChildBLL.engine).getZIPStatistics();
}
}
当我尝试存根 getZIPStatistics() 方法时,我总是得到一个空指针异常,当然我得到了,因为在 getZIPStatistics() 方法中有一个私有对象,它没有被模拟......在我看来Mockito 不会嘲笑私有领域......不幸的是,这是来自另一个项目:
public class BaseIT {
@Mock
protected static FromOtherProject engineMock;
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}
}
在这里我模拟了引擎变量,但是我如何模拟/存根 getZIPStatistics() 方法?这是这个方法:
public class FromOtherProject {
//...
public final String getZIPStatistics() {
return ZIPStatistics.toString();
}
}
我能做什么?
【问题讨论】:
标签: java unit-testing mocking mockito stub