2015-08-24 90 views
25

我在Android Studio中的以下文件夾結構:的Android測試原始資源

├── androidTest 
│   ├── java 
│   └── res 
│    └── raw 
│     └── test_file 
└── main 
    ├── java 
    └── res 
     └── raw 
     └── app_file 

我試圖訪問它存在於androidTest元素的原始文件夾中的test_file資源。下面是從ActivityInstrumentationTestCase2繼承Robotium測試用例中的代碼:

InputStream is = this.getInstrumentation() 
       .getContext() 
       .getResources() 
       .openRawResource(R.raw.test_file); 

Android Studio中拋出一個參考錯誤,因爲資源不能被發現。確切的錯誤是「無法解析符號test_file」。

如何才能引用此資源形成一個測試用例,它存在於androidTest資源包中?

+0

你有工具可以爲你生成樹嗎? –

+0

是的,bash'tree'工具 – jlhonora

+0

非常感謝您的提示 –

回答

32

默認情況下,您的androidTest項目將包含您的應用程序的R類,但androidTest的資源將生成一個單獨的文件。請確保您從測試項目導入R類:

import com.your.package.test.R; 

[..] 

getInstrumentation().getContext().getResources().openRawResource(R.raw.test_file); 

您也可以直接引用測試項目的R類別:

getInstrumentation().getContext().getResources().openRawResource(com.your.package.test.R.raw.test_file); 
+3

我有和OP相同的文件結構,但'android'不會生成'raw'變種。 –

+0

@YaroslavMytkalyk你把什麼樣的文件放在原始文件夾中? – jlhonora

+0

@jlhonora一個沒有擴展名的二進制文件。試圖重命名它添加一些任意擴展,這並沒有改變任何東西。 –

9

我有androidTest資源在正確的位置(src/androidTest/res)和我仍然無法通過<normal.package>.test.R訪問它們。我花了大量的時間搜索,試圖找出發生了什麼事。

我最後偶然發現了答案。如果你正在構建一個buildType,你指定了一個applicationIdSuffix,你的文件在<applicationId><applicationIdSuffix>.test.R !!!!

applicationId "com.example.my.app" 

buildTypes { 
    debug { 
     applicationIdSuffix ".debug" 
    } 
} 

如果你已經在正確的目錄androidTest資源,那麼你就只能通過com.example.my.app.debug.test.R訪問它們!!!!