2015-02-11 8 views
2

Я пытаюсь получить доступ к исходному ресурсу, называемому 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"] 
    } 
+0

Кроме того, мне пришлось изменить getTargetContext() на getContext(), так как мне нужен контекст InstrumentationTest, чтобы получить правильный ресурс. – khmysen

ответ

0

Это довольно старый пост, но так как нет никаких ответов и в случае, если кто-то, как мне интересно, как это сделать:

  1. Создать папку src/androidTest/resources
  2. Внутри папку, добавьте свои ресурсы в пакет теста, где вы будете их загружать (поэтому при обращении от com.test.MyTest поместите файлы в src/androidTest/resources/com/test/test.txt)
  3. Загрузите файл, используя getClass().getResourceAsStream('test.txt')

 Смежные вопросы

  • Нет связанных вопросов^_^