Я пытаюсь получить доступ к исходному ресурсу, называемому test.txt, расположенному в androidTest/res/raw. Я установил свой проект в соответствии с найденной документацией here.Как получить доступ к необработанному файлу из InstrumentationTestCase?
Моя структура проекта:
- ЦСИ
- главный
- ява
- Рез
- androidTest
- ява
- Рез
- сырым
- 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. только перечисляет ресурсы в основной папке/res/raw. Я где-то читал, что мне пришлось добавить .test при импорте R;
import something.traveltracker.test.R
Однако это не работает для меня. Я использую Android studio 1.0.2 с градиентом 2.2.1.
Heres мой 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.
EDIT: Теперь я могу импортировать something.traveltracker.test.R в свой класс, добавив следующую строку в мою сборку.Gradle файл:
sourceSets {
androidTest.res.srcDirs = ["src/androidTest/res"]
}
Кроме того, мне пришлось изменить getTargetContext() на getContext(), так как мне нужен контекст InstrumentationTest, чтобы получить правильный ресурс. – khmysen