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