在我的单元测试中,我尝试了以下内容:
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单元测试吗?
答案 0 :(得分:3)
这是我几个月前广泛研究的内容。不幸的是,dalvik VM目前不支持模拟具体类所需的字节码操作。
因此,您将无法使用任何模拟库来模拟类。你必须在android测试中为你想要模拟的每个类提取一个接口,而不是模拟接口。
关于davlik局限性的进一步阅读: