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

时间:2011-05-24 04:54:22

标签: 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);
    }};

    ...
}

我的目的是模拟我的项目的Application子类。但是,当我运行我的测试时,我得到一个java.lang.ExceptionInInitializerError。我可以不使用ClassImposteriser扩展来运行Android单元测试吗?

1 个答案:

答案 0 :(得分:3)

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

因此,您将无法使用任何模拟库来模拟类。你必须在android测试中为你想要模拟的每个类提取一个接口,而不是模拟接口。

关于davlik局限性的进一步阅读: