2013-11-26 107 views
0

我已經使用Eclipse ADT + maven + Robolectric編寫了一個測試,如下所示。Android + Robolectric測試錯誤「java.lang.RuntimeException:Stub!」

public void testPostToConnectionsCorrect() { 

    setCorrectIP(); 
    activity.postToConnections(); 
    Mockito.verify(mainWebView).postUrl(Mockito.anyString(), EncodingUtils.getBytes(Mockito.anyString(), "UTF-8")); 
} 

private void setCorrectIP() { 
    Intent i = new Intent(Robolectric.getShadowApplication().getApplicationContext(), 
      ConnectionsContainerActivity.class); 
    i.putExtra("IPAddress", "135.127.21.183"); 
    activity = Robolectric.buildActivity(ConnectionsContainerActivity.class).withIntent(i).create().visible().get(); 
    mainWebView = Mockito.mock(WebView.class); 
    activity.setMainWebView(mainWebView); 
} 

但是當我運行「Maven的安裝」作爲follwing得到一個錯誤:

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 7.744 sec <<< FAILURE! - in com.ncr.cxp.client.connections.container.test.ConnectionsContainerActivityTest 
testPostToConnectionsCorrect(com.ncr.cxp.client.connections.container.test.ConnectionsContainerActivityTest) Time elapsed: 7.65 sec <<< ERROR! 
java.lang.RuntimeException: Stub! 
    at org.apache.http.util.EncodingUtils.getBytes(EncodingUtils.java:7) 
    at com.ncr.cxp.client.connections.container.ConnectionsContainerActivity.postToConnections(ConnectionsContainerActivity.java:166) 
    at com.ncr.cxp.client.connections.container.ConnectionsContainerActivity.onCreate(ConnectionsContainerActivity.java:150) 
    at android.app.Activity.performCreate(Activity.java:5008) 
    at org.fest.reflect.method.Invoker.invoke(Invoker.java:112) 
    at org.robolectric.util.ActivityController$1.run(ActivityController.java:116) 
    at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:256) 
    at org.robolectric.util.ActivityController.create(ActivityController.java:111) 
    at org.robolectric.util.ActivityController.create(ActivityController.java:123) 
    at com.ncr.cxp.client.connections.container.test.ConnectionsContainerActivityTest.setCorrectIP(ConnectionsContainerActivityTest.java:79) 
    at com.ncr.cxp.client.connections.container.test.ConnectionsContainerActivityTest.testPostToConnectionsCorrect(ConnectionsContainerActivityTest.java:70) 

看來robolectric不能趕上這個「存根」異常並運行虛擬機的測試。我在過去的討論中嘗試了一些解決方案,但都沒有成功。

PS:我還在同一個項目中使用robolectric編寫了其他測試,它們都很好。只有這個測試有問題。

任何人都可以幫忙嗎?

回答

0

我在依賴項中添加了「RoboGuice」作爲修復它。