Конфигуриране на res srcDirs за androidTest sourceSet

Бих искал да включа ресурси, които да бъдат компилирани само за тестване.

Имам следното във файла build.gradle на моя модул за приложение:

android {

    ...

    sourceSets {
        androidTest {
            java.srcDirs = ['src/androidTest/java']
            res.srcDirs = ['src/androidTest/res']
        }
    }
}

Пътят на java srcDirs е правилен, но ако се опитам да получа ресурс от директорията res в androidTest, ресурсът не може да бъде намерен.

Как мога да имам ресурси в директорията на androidTest, които са включени само за тестове?


person Matt Logan    schedule 30.10.2014    source източник


Отговори (2)


Оказва се, че не е необходимо да променяте нищо от файла build.gradle по подразбиране.

Номерът е, че автоматично генерираният R.java файл е различен за ресурсите в androidTest.

Ако инструкцията за импортиране за R някъде във вашия основен набор от източници изглежда така:

import com.mycompany.myappname.R;

операторът за импортиране за R в тестов файл трябва да изглежда така:

import com.mycompany.myappname.test.R;
person Matt Logan    schedule 30.10.2014
comment
Работи и за мен, но само в InstrumentationTestCase. Ако използвам това в AndroidTestCase, идентификаторите на ресурсите не са същите и получих произволно PNG изображение вместо XML файла, който поисках. - person Oyvind; 11.02.2015

Ако имате тип компилация, където сте задали applicationIdSuffix, вашите src/androidTest/res ресурси ще бъдат на <applicationId><applicationIdSuffix>.test.R !!!!! МНОГО ВАЖНО!!!

i.e.

applicationId "com.example.my.app"

buildTypes {
    debug {
        applicationIdSuffix ".debug"
    }
}

имате ли ресурси в src/androidTest/res? Те НЕ са на com.example.my.app.test! Ако изпълнявате компилацията за отстраняване на грешки, те са на com.example.my.app.debug.test.R !!!!

person joshkendrick    schedule 26.05.2016
comment
Какво ви кара да мислите, че OP е задал applicationIdSuffix? - person IgorGanapolsky; 23.08.2017