2015-04-09 19 views
6

Komut satırından birim testleri çalıştırırken kaynak yükleme konusunda sorun yaşıyorum. IntelliJ'de gayet iyi çalışıyor.

kullanıyorum:

  • com.android.tools.build:gradle:1.1.3
  • org.robolectric: robolectric-gradle-eklenti: 1.0.1
  • org.robolectric : robolectric: 2,4

I olan aşağıdaki proje yapısı (Çoklu modülü):

+---module1 
| | build.gradle 
    | \---src 
    |  +---main 
    |  | | AndroidManifest.xml 
    |  | | 
    |  | +---res 
    |  | | \---values 
    |  | |   strings.xml 
    |  \---test 
    |   \---java 
    |    \---example 
    |     | FooTest.java 
+---module2 
etc 

Testim (basitleştirilmiş) şöyle görünür:

android.content.res.Resources$NotFoundException: unknown resource 2131361826 
at org.robolectric.shadows.ShadowAssetManager.getAndResolve(ShadowAssetManager.java:311) 
at org.robolectric.shadows.ShadowAssetManager.getResourceText(ShadowAssetManager.java:69) 
at android.content.res.AssetManager.getResourceText(AssetManager.java) 
at android.content.res.Resources.getText(Resources.java:235) 
at org.robolectric.shadows.ShadowResources.getText(ShadowResources.java:363) 
at android.content.res.Resources.getText(Resources.java) 
at android.content.res.Resources.getString(Resources.java:325) 
at org.robolectric.shadows.ShadowContext.getString(ShadowContext.java:41) 
at org.robolectric.shadows.ShadowContextWrapper.getString(ShadowContextWrapper.java:96) 
at android.content.Context.getString(Context.java) 

Not:

@Config(emulateSdk = 18, reportSdk = 18, manifest = "./src/main/AndroidManifest.xml") 
@RunWith(RobolectricTestRunner.class) 
public class FooTest { 

    @Test 
    public void test() { 
     String result = Robolectric.application.getString(R.string.error_message); 

     assertThat(result, notNullValue()); 
    } 
} 

Bu stacktrace olsun ben bir yanlış yapılandırma olduğunu bu nedenle olasıdır Gradle oldukça yeniyim yere. Proje yapısı sözleşmesini takip ederek kaynakları nerede bulacağımı belirtmem gerektiğini varsaydım. Bunları belirtmeden denedim ama hiçbir şansı olmayan:

android { 
    sourceSets { 
     main { 
      manifest.srcFile 'src/main/AndroidManifest.xml' 
      java.srcDirs = ['src/main/java'] 
      res.srcDirs = ['src/main/res'] 
      assets.srcDirs = ['src/main/assets'] 
     } 
    } 
} 
+0

Yapılandırma bildirinizi 'module1/src/main/AndroidManifest.xml' olarak değiştirmeyi deneyebilir misiniz? Sorununuz için düzeltilemiyor (şimdi AS'de başarısız oluyorsunuz) ama sadece hızlı bir şekilde kontrol ediniz. –

+0

Merhaba, bunu denedim ve aldım: > Dosya '/ opt/buildagent/work/22b7e45eb23ab445/module1/module1 /src/main/AndroidManifest.xml 'özellik için belirtilen' manifest 'mevcut değil. – Alix

+0

Yanlış tahmin. Bildiri dosyasından hiç bahsedilmediğini kaldırabilir misiniz? –

cevap

1

Soruşturma sırasında sorunun nedenini bulduk. android gradle plugin v1.1.x kullanırsanız, ortak robolectric gradle plugin'a ihtiyacınız yoktur.

robolectric gradle plugin'un yanlış sürümü testlerinizi bozarsa dikkatli olun.

İlgili konular