2013-03-19 67 views
5

我想爲我的android應用程序安裝robolectric。 我的主代碼有一個子模塊和一個外部庫,我不使用Maven。java.lang.IllegalStateException:必須有一些重疊的resourceIdToResName

steps設置一個robolectric項目,當我嘗試運行測試它提供了以下錯誤

java.lang.IllegalStateException: there must have been some overlap for resourceIdToResName! expected 3014 but got 3013 
    at org.robolectric.res.MergedResourceIndex.merge(MergedResourceIndex.java:20) 
    at org.robolectric.res.MergedResourceIndex.<init>(MergedResourceIndex.java:12) 
    at org.robolectric.res.RoutingResourceLoader.<init>(RoutingResourceLoader.java:22) 
    at org.robolectric.RobolectricTestRunner.createAppResourceLoader(RobolectricTestRunner.java:631) 
    at org.robolectric.RobolectricTestRunner.getAppResourceLoader(RobolectricTestRunner.java:614) 
    at org.robolectric.internal.ParallelUniverse.setupApplicationState(ParallelUniverse.java:35) 
    at org.robolectric.RobolectricTestRunner.setupApplicationState(RobolectricTestRunner.java:414) 
    at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:297) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
    at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:241) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

誰能幫我了吧!它試圖從兩個來源合併resourceIdToResName的地圖,這些來源是什麼?

感謝

+0

有人知道這一點。相同的錯誤 – SaKet 2013-04-12 01:26:34

+0

我也有這個錯誤! – Martin 2013-05-18 13:24:24

+0

[This](https://github.com/robolectric/robolectric/issues/618)可能會幫助你 – Thrakbad 2013-10-09 14:46:11

回答

1

此問題可能是由一些在你的主要項目res文件夾,可能是一個佈局的xml文件造成的。

分析這個從res文件夾中刪除文件,直到測試項目運行。編譯主項目中的錯誤,同時通過實驗性地刪除res文件來查找錯誤文件不會停止測試項目的運行,但必須不存在阻止R.java生成的資源錯誤。

我的問題是在佈局文件中的錯誤如下:

<TextView android:id="@+android:id/actualValue" 

更改爲

<TextView android:id="@+id/actualValue" 

後,一切都正常工作。

相關問題