【问题标题】:Mockito test View visiblityMockito 测试 查看可见性
【发布时间】:2018-07-06 12:42:47
【问题描述】:

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

我有这样的事情

@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 对其进行测试?或者我需要使用不同的测试框架?

感谢您的工作示例。

【问题讨论】:

  • 使用 espresso 测试用户界面
  • 不要这样做。使用浓缩咖啡。请永远不要尝试只创建一个模拟片段。这毫无意义。

标签: java android kotlin mockito


【解决方案1】:

您的堆栈跟踪不是很有帮助,因为您的示例代码不包含行号。但我可以猜测 NPE 发生在您的断言语句中。默认情况下,由 mockito 创建的模拟“什么都不做”。当您尝试访问进度条时,它为空。创建模拟片段不仅仅神奇地创建了您的正常片段将拥有的所有对象。即使你调用了片段构造函数,那对你也没什么好处。 Android 框架必须创建这些对象才能使它们有意义。

【讨论】:

    猜你喜欢
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    相关资源
    最近更新 更多