Android jmockit和机器人分子能共存吗?

Android jmockit和机器人分子能共存吗?,android,robolectric,jmockit,Android,Robolectric,Jmockit,我正在尝试使用Robolectric实现一个单元测试,以替换android.jar中的存根方法,同时还使用jMockit模拟一个android类(在我的例子中是片段)。然而,我似乎无法让它发挥作用。如果我用@RunWith(RobolectrictTestRunner.class)注释测试类,我会得到: java.lang.IllegalStateException:JMockit未正确初始化;检查类路径中jmockit.jar是否位于junit.jar之前(如果使用junit,则检查文档) 如

我正在尝试使用Robolectric实现一个单元测试,以替换android.jar中的存根方法,同时还使用jMockit模拟一个android类(在我的例子中是片段)。然而,我似乎无法让它发挥作用。如果我用
@RunWith(RobolectrictTestRunner.class)
注释测试类,我会得到:

java.lang.IllegalStateException:JMockit未正确初始化;检查类路径中jmockit.jar是否位于junit.jar之前(如果使用junit,则检查文档)

如果我使用
@RunWith(JMockit.class)
或不使用
@RunWith
,我会得到“Stub!”异常

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


有谁能让jmockit和robolectric配合得很好?

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

查看JMockit和Robolectric测试运行程序的源代码:

在这两种技术中,机器人分子技术要复杂得多,所以我们不想复制这种功能。JMockit测试运行程序相当简单。它应该能够扩展RobolectrictTestRunner并包括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);
   }
}
导入mockit.internal.startup.*;
类MyTestRunner扩展了RobolectrictTestRunner{
静态{Startup.initializeIfNeeded();}
/**
*构造测试运行程序的新实例。
*
*@如果测试类的格式不正确,则引发InitializationError
*/
公共MyTestRunner(类testClass)引发初始化错误
{
超级(测试类);
}
}
在版本1.8(2014年4月27日)中,JMockit可以与Robolectric一起工作

JMockit now works fine with the Robolectric Android testing tool (tested with Robolectric 2.2 and 2.3).

我认为它类似于PowerMock。我不知道有什么解决办法yet@Joe,我希望对PowerMock和Robolectric尝试类似的方法。但我在快速巡演中失败了。这很复杂。也许我会做第二轮:)这没有帮助。问题是,只要我向项目中添加JMockit依赖项(实际上没有在任何地方使用它),Roboelectric测试就开始失败,并出现“找不到兼容的方法:fireTestRunStarted”