2015-02-11 98 views
2

我正在嘗試訪問位於androidTest/res/raw中的名爲test.txt的原始資源。我已經根據找到的文檔here設置了我的項目。如何從InstrumentationTestCase訪問原始文件?

我的項目結構:

  • SRC
    • 主要
      • 的Java
      • 資源
    • androidTest
      • 的Java
      • 資源
        • 原料
          • 的test.txt

這裏是我的測試類:

package something.traveltracker; 

import android.test.InstrumentationTestCase; 
import android.test.suitebuilder.annotation.SmallTest; 

import java.io.InputStream; 
import something.traveltracker.models.RuterStop; 

public class RuterStopAndroidTest extends InstrumentationTestCase { 
    @SmallTest 
    public void testCreateRuterStopFromJSON() { 
    InputStream is = getInstrumentation().getTargetContext().getResources().openRawResource(R.raw.test); 
    RuterStop ruterStop = RuterStop.createFromJSON(is); 

    assertSomething... 
    } 
} 

問題是R.raw。只列出main/res/raw文件夾中的資源。我在某處讀取了導入R時必須添加.test的地方;

import something.traveltracker.test.R 

但是這不適用於我。我正在使用Android Studio 1.0.2和Gradle 2.2.1。

我的繼承人的AndroidManifest.xml

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "something.traveltracker" 
     minSdkVersion 19 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 

    lintOptions { 
     abortOnError false 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:21.0.3' 
    compile 'com.google.android.gms:play-services:6.5.87' 
} 

問題: 我如何可以訪問此測試資源?我只需要運行這個單元測試時的資源,我不希望它被包含在最終的apk中。

編輯:我現在可以通過將以下行添加到我的構建中,在我的類中導入something.traveltracker.test.R。gradle這個文件:

sourceSets { 
     androidTest.res.srcDirs = ["src/androidTest/res"] 
    } 
+0

此外,我必須將getTargetContext()更改爲getContext(),因爲我需要InstrumentationTest的上下文以獲取正確的資源。 – khmysen 2015-02-11 08:47:27

回答

0

這是一個很老的文章,但因爲沒有答案,萬一有人像我一樣想知道如何做到這一點:

  1. 創建的文件夾src/androidTest/resources
  2. 裏面的文件夾中,將您的資源添加到您要加載它們的測試包下(因此,如果從com.test.MyTest訪問,請將文件放入src/androidTest/resources/com/test/test.txt
  3. 使用getClass().getResourceAsStream('test.txt')加載文件
相關問題