【发布时间】:2016-11-29 20:14:19
【问题描述】:
我正在使用 Mockito 进行 JUnit 测试,但一直在找出一个断言问题。我正在创建一个模拟对象,然后使用模拟对象创建一个演示者对象。
@Mock
Object mFooBar;
private FooPresenter mFooPresenter;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mFooPresenter = new FooPresenter(mFooBar);
}
在我的演示者的 onDestroy() 方法中,我将对象清空。
public FooPresenter(Object fooBar) {
mFooBar = fooBar;
}
@Override
public void onDestroy() {
mFooBar = null;
}
然后,当我尝试在我的 FooPresenterTest 中为 mFooBar 断言 Null 时,它失败了,因为它不为空。
@Test
public void testThatObjectsAreNullifiedInOnDestroy() throws Exception {
fooPresenter.onDestroy();
assertNull(mFooBar);
}
这失败了
Expected :<null>
Actual :mFooBar
那么我的问题是,与我为运行测试而实例化的对象相比,我的测试类中对模拟对象的引用是如何处理的?为什么 assertNull 应该设置为 null 却失败了?
【问题讨论】:
-
嘿@kerseyd27,我假设您
FooPresenter中的mFooBar字段是私有的,是否有任何属性暴露它? -
嘿@abest 是的,它是私有的,并且没有公开的属性。