Mockito测试查看可见性

时间:2018-07-06 12:42:48

标签: java android kotlin mockito

我想为视图可见性编写测试。

我有这样的东西

@Test
fun showProgressBarTest() {

    val eventPlannerListFragment = Mockito.mock(EventPlannerListFragment::class.java)

    eventPlannerListFragment.showProgressBar(true)

    assertEquals(View.VISIBLE, eventPlannerListFragment.fragment_progress_bar.visibility)

}

但是我得到了:

java.lang.NullPointerException
at com.fs.wfm.ui.EventPlannerListFragmentTest.showProgressBarTest(EventPlannerListFragmentTest.kt:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
...

是否可以用Mockito进行测试?还是我需要使用其他测试框架?

感谢您的工作示例。

1 个答案:

答案 0 :(得分:1)

您的堆栈跟踪不是很有用,因为您的示例代码不包含行号。但是我可以猜想NPE发生在您的assert语句中。默认情况下,mockito创建的模拟“不执行任何操作”。当您尝试访问进度栏时,它为空。创建模拟片段不仅可以神奇地创建普通片段将拥有的所有对象。即使调用了片段构造函数,那也不会有什么好处。 Android框架必须创建这些对象才有意义。