2013-02-08 68 views
6

我试图使用Robolectric来实现一个单元测试来替换android.jar中的stubbed方法,同时也使用jMockit来模拟一个Android类(片段,在我的情况下)。但是,我似乎无法让它工作。如果我注释测试类@RunWith(RobolectricTestRunner.class),我得到:可以jmockit和robolectric共存吗?

java.lang.IllegalStateException:JMockit没有正确初始化;检查jmockit.jar在classpath之前的junit.jar(如果使用JUnit;如果没有,查看文档)

如果我使用@RunWith(JMockit.class)或没有@RunWith,我得到的“存根”!例外。

目前,我的类路径的顺序如下:robolectric,jmockit,junit,android。

有没有人能够让jmockit和robolectric一起玩呢?

+0

它类似于PowerMock我想。我还不知道任何解决方案 – 2013-02-13 12:36:50

回答

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); 
    } 
} 
+0

有趣的,谢谢你的建议! – 2013-02-18 16:43:13

+0

@Joe,我期待为PowerMock和Robolectric尝试类似的方法。但我在快速巡回中失败了。这很复杂。也许我会做第二轮:) – 2013-02-22 12:48:24

+0

这没有帮助。问题是,只要我将JMockit依赖项添加到项目中(没有实际使用它),Roboelectric测试开始失败,并显示“找不到兼容的方法:fireTestRunStarted” – altumano 2013-03-16 18:26:26

2

版本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). 

http://jmockit.org/changes.html

相关问题