【问题标题】:How to unit test POJO which uses Android SDK classes on JVM?如何对在 JVM 上使用 Android SDK 类的 POJO 进行单元测试?
【发布时间】:2013-07-06 21:35:29
【问题描述】:

我有一个名为 Warehouse 的 Java 类,它使用 Android 的 Bundle。尝试对其进行单元测试时,出现以下异常:

java.lang.RuntimeException: Stub!

类看起来像这样:

public class Warehouse {
    private Bundle items;

    public Warehouse(Bundle items) {
        this.items = items;
    }
}

在单元测试中我有以下内容:

void testInitializeWarehouse() {
     Bundle items = new Bundle();
     Warehouse wh = new Warehouse(items);
     assertNotNull(wh);
}

当我运行测试时,我得到 java.lang.RuntimeException: Stub! 我知道这个问题与我在 JVM 而不是 Dalvik VM 上运行单元测试有关,但是有没有办法在 JVM 上运行这个单元测试?

【问题讨论】:

    标签: android junit jvm mocking stub


    【解决方案1】:

    尝试使用Powermock 模拟Bundle,使用它模拟最终类的能力,如here - Powermock MockFinal 所述

    【讨论】:

    • 在这种情况下可能会起作用,其中将依赖项注入到方法中。但是我直接在 POJO 中实例化 Android 类的情况呢?这行不通。
    【解决方案2】:

    我找到了Robolectric,这正是我想要的。我本可以使用模拟,但一半的单元测试将包括模拟设置等。

    “一个单元测试框架,它可以去除 Android SDK jar 的齿,因此您可以 试驾您的 Android 应用程序的开发。测试在内部运行 几秒钟内您的工作站上的 JVM。”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-30
      • 1970-01-01
      相关资源
      最近更新 更多