2013-03-19 2 views
5

Я пытаюсь настроить robolectric для моего приложения для Android. В моем основном коде есть субмодуль и внешняя библиотека, и я не использую 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

+0

У меня тоже есть эта ошибка! – Martin

+0

[Это] (https://github.com/robolectric/robolectric/issues/618) может помочь вам – Thrakbad

ответ

1

Эта проблема, вероятно, вызвана чем-то в основных проектах папку Рез, возможно файл макета XML.

Проанализировать удаление файлов из папки res до запуска тестового проекта. Компиляция ошибок в главном проекте при экспериментальном удалении файлов res для поиска плохого файла не остановит ваш тестовый проект, но не должно быть ошибок в ресурсах, которые предотвращают генерирование R.java.

Моя проблема была ошибка в файле макета следующим образом:

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

После перехода к

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

все работало нормально.