我想为视图可见性编写测试。
我有这样的东西
@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进行测试?还是我需要使用其他测试框架?
感谢您的工作示例。
答案 0 :(得分:1)
您的堆栈跟踪不是很有用,因为您的示例代码不包含行号。但是我可以猜想NPE发生在您的assert语句中。默认情况下,mockito创建的模拟“不执行任何操作”。当您尝试访问进度栏时,它为空。创建模拟片段不仅可以神奇地创建普通片段将拥有的所有对象。即使调用了片段构造函数,那也不会有什么好处。 Android框架必须创建这些对象才有意义。