2015-06-18 1 views
5

Получение ресурсаNotFoundException при использовании библиотеки с Robolectic 3.0-rc3. Ресурс объявлен в build.gradle с компиляцией 'net.danlew: android.joda: 2.8.0'. В частности, это порт Android Joda-Time.Ресурсы библиотеки с Robolectric 3 - JodaTime

android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f0501da 
at org.robolectric.shadows.ShadowResources.checkResName(ShadowResources.java:343) 
at org.robolectric.shadows.ShadowResources.getResName(ShadowResources.java:333) 
at org.robolectric.shadows.ShadowResources.openRawResource(ShadowResources.java:382) 
at android.content.res.Resources.openRawResource(Resources.java) 
at net.danlew.android.joda.ResourceZoneInfoProvider.openResource(ResourceZoneInfoProvider.java:120) 
at net.danlew.android.joda.ResourceZoneInfoProvider.<init>(ResourceZoneInfoProvider.java:39) 

класс Применение:

@Override 
public void onCreate() { 
    super.onCreate();  
    JodaTime.init(this); 
} 

Мой тестовый класс:

@RunWith(RobolectricGradleTestRunner.class) 
@Config(constants = BuildConfig.class, 
    sdk = 21) 
public class MyTest { 

@Before 
public void setup() { 

} 

@Test 
public void myTest() { 
//Test my stuff 
} 

}

+0

У меня есть один и тот же вопрос, но тесты проходят, ошибка получает только зарегистрированным правильно? – Maximosaic

+0

Нет, проверка завершилась неудачей с исключительным временем выполнения на JodaTime.init (this); линия. – Patrick

+0

Извините. Я использую «net.danlew: android.joda: 2.7.2», однако я понял, что не делаю этого 'init'. Но я просто попробовал «JodaTimeAndroid.init (активность)», и он работал в моем тесте, возможно, есть разница между «JodaTimeAndroid» и «JodaTime». Надеюсь, это может вам помочь, удачи! – Maximosaic

ответ

0

Вы должны инициализировать библиотеку в тестах, со средой выполнения Robolectric. Поэтому добавьте это в свои методы setup().

JodaTimeAndroid.init(RuntimeEnvironment.application); 

Так что ваш тест будет выглядеть примерно так:

@RunWith(RobolectricGradleTestRunner.class) 
@Config(constants = BuildConfig.class, sdk = 21) 
public class MyApplicationTest { 

    @Before 
    public void setup() { 
     JodaTimeAndroid.init(RuntimeEnvironment.application); 
    } 

    @Test 
    public void myTest() { 
     //Test my stuff 
     DateTime aDateTime = new DateTime(); 
     DateTime bDateTime = new DateTime(aDateTime); 
     assertEquals(aDateTime, bDateTime); 
    } 
} 
+0

Имейте это точно, но все равно получите ту же проблему с открытием ресурсов. – StuStirling

+0

Если вы используете только один тест, а не весь пакет, все равно это произойдет? Я видел проблему до того, где из-за предыдущего теста, который был запущен и не сделал этого правильно, он прерывает другие тесты позже –

 Смежные вопросы

  • Нет связанных вопросов^_^