2015-06-18 18 views
5

Robolectic 3.0-rc3 ile kütüphane kullanırken bir ResourceNotFoundException alma. Kaynak derleme 'net.danlew: android.joda: 2.8.0' ile build.gradle içinde bildirildi. Özellikle bu, Joda-Time'ın Android bağlantı noktasıdır.Robolectric 3 ile kütüphane kaynakları - 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) 

Uygulama sınıfı:

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

Testim sınıfı:

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

@Before 
public void setup() { 

} 

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

}

+0

, ama testler geçiyoruz, hata sağ günlüğe sadece alır? – Maximosaic

+0

Hayır, JodaTime.init (this) de runtimeException ile başarısız oldu; hat. – Patrick

+0

Üzgünüz o zaman. "Net.danlew: android.joda: 2.7.2" yi kullanıyorum, ancak bu init'i yapmadığımı farkettim. Ama ben sadece JodaTimeAndroid.init (aktivite) denedim ve testimde çalıştı, belki JodaTimeAndroid ve JodaTime arasında bir fark var. Umarım bu size yardımcı olabilir, iyi şanslar! – Maximosaic

cevap

0

Sen Robolectric çalışma zamanı ortamıyla, testlerinizde kütüphane çalıştırmalısınız. Bunun Yani bunu yönteminize ekleyin.

JodaTimeAndroid.init(RuntimeEnvironment.application); 

Yani test böyle bir şey görünecektir: Ben de aynı sorun var

@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

Bunu tam olarak yapın ama yine de açılış kaynakları ile aynı sorunu yaşayın. – StuStirling

+0

Yalnızca bir test çalıştırırsanız, tüm paket yerine, hala gerçekleşir mi? Daha önce test edilmiş olan ve bu hakkı yapmayan bir önceki test nedeniyle, daha sonra başka testler yaptım. –