2

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

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 单元测试吗?

4

1 回答 1

3

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

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

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

于 2011-07-24T06:47:44.773 回答