jmockit和robolectric可以共存吗?

And*_*nie 6 android jmockit robolectric

我正在尝试使用Robolectric来实现单元测试来替换android.jar中的stubbed方法,同时还使用jMockit来模拟Android类(在我的例子中是Fragment).但是,我似乎无法让它发挥作用.如果我用测试类注释@RunWith(RobolectricTestRunner.class),我得到:

java.lang.IllegalStateException:JMockit未正确初始化; 检查jmockit.jar是否在类路径中的junit.jar之前(如果使用JUnit;如果没有,请检查文档)

如果我使用@RunWith(JMockit.class)或不使用@RunWith,我会得到"Stub!" 例外.

目前,我的类路径按以下顺序排列:robolectric,jmockit,junit,android.

那里的任何人都可以让jmockit和robolectric一起玩得很好吗?

Joe*_*Joe 5

这应该是可能的.我没有测试过这个,但你可以创建自己的测试运行器.

看一下JMockit和Robolectric测试运行器的来源:

在两个Robolectric中,其中一个要复杂得多,因此我们不想复制该功能.JMockit测试运行器非常简单.它应该可以扩展RobolectricTestRunner并包含JMockit功能.

import mockit.internal.startup.*;
class MyTestRunner extends RobolectricTestRunner {

   static { Startup.initializeIfNeeded(); }

   /**
    * Constructs a new instance of the test runner.
    *
    * @throws InitializationError if the test class is malformed
    */
   public MyTestRunner(Class<?> testClass) throws InitializationError
   {
      super(testClass);
   }
}
Run Code Online (Sandbox Code Playgroud)