android - 如何使用 jMock ClassImposterizer 进行 Android 单元测试?

标签 android unit-testing tdd jmock

在我的单元测试中,我尝试了以下方法:

import org.jmock.Mockery;
import org.jmock.Expectations;
import org.jmock.lib.legacy.ClassImposteriser; 

public class MyActivityTest extends ActivityUnitTestCase<MyActivity> {
    private Mockery context = new Mockery() {{
        setImposteriser(ClassImposteriser.INSTANCE);
    }};

    ...
}

我的预期用途是模拟我项目的应用程序子类。但是,当我运行测试时,我得到一个 java.lang.ExceptionInInitializerError。我不能使用 ClassImposteriser 扩展来运行 Android 单元测试吗?

最佳答案

这是我几个月前广泛研究的内容。不幸的是,dalvik VM 目前不支持模拟具体类所需的字节码操作。

因此您将无法使用任何模拟库来模拟类。您必须为要在 Android 测试中模拟的每个类提取一个接口(interface),然后模拟该接口(interface)。

一些关于 davlik 限制的进一步阅读:

关于android - 如何使用 jMock ClassImposterizer 进行 Android 单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6105822/

相关文章:

Android线程循环检查httppost

java - 在不使用 Java 中的任何 DI 框架的情况下,实际上有可能做好 TDD(或 BDD)吗?

android - 为什么进入动画在新线程中不起作用?

unit-testing - TDD 和 ADO.NET Entity Framework

python - Tornado 中的单元测试

c# - 单元测试 c# 和测试私有(private)方法的问题

testing - 使用外部服务/api 的代码的 TDD BDD 最佳实践

architecture - TDD: "Test Only"方法

安卓术语

java - 在ListView上依次显示用户信息