如何为 Android 单元测试定义模拟光标
How to define Mock Cursor for Android Unit Test
我在 PageAdapter
class 中填充了 Cursor
和 FragmentManager
值,但是在测试过程中它带来了 Cursor
和 FragmentManager
作为null 永远。
如何配置测试以获取具有有效值的 Cursor
和 FragmentManager
?
public class PagerAdapter extends FragmentStatePagerAdapter {
private Cursor mCursor;
public PagerAdapter(FragmentManager fm, Cursor aCursor) {
super(fm);
mCursor = aCursor;
}
测试代码块如下:
@RunWith(MockitoJUnitRunner.class)
public class PagerAdapterTest extends Assert{
@Mock
private PagerAdapter mPagerAdapter;
private FragmentManager fm;
private Cursor mCursor;
@Before
public void setUp() throws Exception {
mPagerAdapter = new PagerAdapter(fm, mCursor);
}
您的问题是 "simple" - 在您的测试代码中:
private FragmentManager fm;
private Cursor mCursor;
都是null。所以这个:
mPagerAdapter = new PagerAdapter(fm, mCursor);
也许你假设 @Mock 模拟了 all 字段 - 不,抱歉:它只模拟了之后声明的 first 字段!
所以您的代码只是在做 new PageAdapter(null, null)
。重点是:你需要在"real world".
中mockAndroid系统提供的各种核心基础设施元素
除此之外,您似乎 不理解 模拟和单元测试是如何结合在一起的。您想要 test 您的 PageAdapter class - 在这种情况下,no 对 mock[=40] 有意义=] PageAdapter class。您为那些需要 馈送 到被测 class 的对象创建模拟,以测试 class。从这个意义上说,您应该首先研究单元测试和模拟的基础知识(最好没有复杂性由 Android 添加)。例如开始阅读 here。
然后,当您 "got that part" 时,阅读并遵循 详尽的 文档,该文档向您解释了如何为 Android。例如,参见 here。
我在 PageAdapter
class 中填充了 Cursor
和 FragmentManager
值,但是在测试过程中它带来了 Cursor
和 FragmentManager
作为null 永远。
如何配置测试以获取具有有效值的 Cursor
和 FragmentManager
?
public class PagerAdapter extends FragmentStatePagerAdapter {
private Cursor mCursor;
public PagerAdapter(FragmentManager fm, Cursor aCursor) {
super(fm);
mCursor = aCursor;
}
测试代码块如下:
@RunWith(MockitoJUnitRunner.class)
public class PagerAdapterTest extends Assert{
@Mock
private PagerAdapter mPagerAdapter;
private FragmentManager fm;
private Cursor mCursor;
@Before
public void setUp() throws Exception {
mPagerAdapter = new PagerAdapter(fm, mCursor);
}
您的问题是 "simple" - 在您的测试代码中:
private FragmentManager fm;
private Cursor mCursor;
都是null。所以这个:
mPagerAdapter = new PagerAdapter(fm, mCursor);
也许你假设 @Mock 模拟了 all 字段 - 不,抱歉:它只模拟了之后声明的 first 字段!
所以您的代码只是在做 new PageAdapter(null, null)
。重点是:你需要在"real world".
除此之外,您似乎 不理解 模拟和单元测试是如何结合在一起的。您想要 test 您的 PageAdapter class - 在这种情况下,no 对 mock[=40] 有意义=] PageAdapter class。您为那些需要 馈送 到被测 class 的对象创建模拟,以测试 class。从这个意义上说,您应该首先研究单元测试和模拟的基础知识(最好没有复杂性由 Android 添加)。例如开始阅读 here。
然后,当您 "got that part" 时,阅读并遵循 详尽的 文档,该文档向您解释了如何为 Android。例如,参见 here。