2014-01-17 23 views
8

私は既にこの問題が以前に尋ねられたことを知っていましたが、この問題を解決できません。 jUnit、Robolectric、Gradleでテストをコンパイルして適用できます。アクティビティをテストしたり、リソースを取得しようとすると、問題またはエラーが発生します。Gradle Robolectric ResourcesテストでNotFoundExceptionが発生しました

android.content.res.Resources $ NotFoundException:不明なリソース

資源$ NotFoundException:いいえ、そのようなテーマ

PageActivity startPageActivity = Robolectric.buildActivity(PageActivity.class).create().get(); 

Context context = Robolectric.getShadowApplication().getApplicationContext(); 
ShadowContext shadowContext = shadowOf(context); 
assertNotNull(" No App name String " ,shadowContext.getString(R.string.app_name)); 

そしてこのたび、私は同じ問題を持っていますプロジェクトの構造は次のとおりです。

. 
├── build.gradle 
├── settings.gradle 
└── mainproject 
    ├── build 
    │ ├── classes 
    │ │ └── debug 
    ├── build.gradle 
    └── src 
     └── main 
     │ ├── AndroidManifest.xml 
     │ └── java 
     │   └── com... 
     │ └── resources 
     └── envDev 
     │ └── java 
     │   └── com... 
     │ └── resources 
     └── envQa 
     │ └── java 
     │   └── com... 
     │ └── resources 
     └── envLive 
     │ └── java 
     │   └── com... 
     │ └── resources 
     └── test 
     │ └── src 
     │   └── java 
     │    └── com... 
     │   └── rescources 
     └── testEnvDev 
     │ └── src 
     │   └── java 
     │    └── com... 
     │   └── rescources 
     └── testEnvQa 
     │ └── src 
     │   └── java 
     │    └── com... 
     │   └── rescources 
     └── testEnvLive 
      └── src 
       └── java 
         └── com... 
       └── rescources 

これはソースセットですグラデーションで罰金:

sourceSets { 
     main { 
      java.srcDir file('src/main/java') 
      manifest.srcFile file('src/main/AndroidManifest.xml') 
      res.srcDir file('src/main/resources') 
     } 
     envDev { 
      java.srcDir file('src/envDev/java') 
      manifest.srcFile 'src/envDev/AndroidManifest.xml' 
      res.srcDir file('src/envDev/resources') 
     } 

     envQa { 
      java.srcDir file('src/envQa/java') 
      manifest.srcFile 'src/envQa/AndroidManifest.xml' 
      res.srcDir file('src/envQa/resources') 
     } 

     envLive { 
      java.srcDir file('src/envLive/java') 
      manifest.srcFile 'src/envLive/AndroidManifest.xml' 
      res.srcDir file('src/envLive/resources') 
     } 

     instrumentTest { 
      java.srcDir file('src/test/java') 
      res.srcDir file('src/test/resources') 
     } 
     instrumentTestEnvDev { 
      java.srcDir file('src/testEnvDev/java') 
      res.srcDir file('src/testEnvDev/resources') 
     } 
     instrumentTestEnvQa { 
      java.srcDir file('src/testEnvQa/java') 
      res.srcDir file('src/testEnvQa/resources') 
     } 
     instrumentTestEnvLive { 
      java.srcDir file('src/testEnvLive/java') 
      res.srcDir file('src/testEnvLive/resources') 
     } 

    } 

誰かがこの問題に直面する可能性がありますか?

おかげ

+0

robolectricテストを実行するためにいくつかのgradleプラグインを使用していますか? robolectricのどのバージョンを使用していますか?すべてのソースセットを指定する必要はありません。リソースフォルダの名前をresに変更し、製品のフレーバーを使用します。 –

+0

はい、Gradle Android Test Plugin 0.9.1とRobolectric 2.1を使用しています。私は再び資源名として "res"を再度適用するつもりです。私はすでにそれをやったのですが、うまくいきませんでした。ありがとう。 –

+0

あなたはandroid gradleプラグインを使用していますか? –

答えて

0

私はRobolectric v2.3の-SNAPSHOTに移動し、それを解決するために、管理終わり。

あなたは同じジェイクウォートンプラグインは、このRobolectric V2.3-SNAPSHOTでうまく動作ここoss.sonatype.org/index.html#nexus-search;quick~org.robolectric

をこのスナップショットを見つけることができます。

おそらく、この情報は他の人に役立つかもしれません。

+0

スナップショットのバージョンを 'gradle.build'にどのように追加しますか? ?私はそれを見つけることができない – noloman

13

Robolectric v2.3-SNAPSHOTでも同じ問題が発生しました。 Configアノテーションを使用してテストファイルのマニフェストを明示的に設定することによって解決しました。

@Config(manifest = "src/main/AndroidManifest.xml") 
@RunWith(RobolectricTestRunner.class) 
public class MainActivityTest extends AndroidTestCase { 
... 
} 
関連する問題