2013-02-08 66 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

相關問題