Robolectric Testsuits для Gradle

Каждый раз, когда я запускаю «тест gradlew» на терминале в Android Studio, выполняются ВСЕ мои тесты (хранящиеся в app\src\androidTest\java\path\to\package).

зависимости для компиляции тестов в app/build.gradle:

androidTestCompile 'junit:junit:4.10'
androidTestCompile 'org.robolectric:robolectric:2.1.+'
androidTestCompile 'com.squareup:fest-android:1.0.+'
androidTestCompile "org.mockito:mockito-all:1.9.5"

Я новичок в JUnit и Robolectric, также у меня есть TestRunner по умолчанию:

public class MyTestRunner extends RobolectricTestRunner {
    public MyTestRunner (Class<?> testClass) throws InitializationError {
        super(testClass);
    }

    @Override
    protected AndroidManifest getAppManifest(Config config) {
        String manifestProperty = System.getProperty("android.manifest");
        if (config.manifest().equals(Config.DEFAULT) && manifestProperty != null) {
            String resProperty = System.getProperty("android.resources");
            String assetsProperty = System.getProperty("android.assets");
            return new AndroidManifest(Fs.fileFromPath(manifestProperty), Fs.fileFromPath(resProperty),
                    Fs.fileFromPath(assetsProperty));
        }
        return super.getAppManifest(config);
    }

}

Каждый ClassTest.java аннотируется @RunWith(MyTestRunner.class).

Как я могу запустить только несколько тестов? Например. только один конкретный тест или все тесты в одном конкретном классе / одном конкретном пакете?

И, может быть, есть способ сделать все это с помощью графического интерфейса Android Studio вместо терминала? (хорошо бы знать ;))


person lis    schedule 10.08.2014    source источник
comment
возможный дубликат есть ли способ выполнить один тест Robolectric 2.3 (используя Gradle)?   -  person Eugen Martynov    schedule 11.08.2014
comment
На самом деле вам не нужен этот тестовый бегун. RobolectricTestRunner от robolectric 2.3 должно работать из коробки   -  person Eugen Martynov    schedule 11.08.2014


Ответы (1)


Вот как я фильтрую Robolectric test в build.gradle:

robolectric {
    include project.hasProperty("testFilter") ? "**/*${project.ext.testFilter}*Test.class" : '**/*Test.class'
    exclude '**/espresso/**/*.class'

    // other robolectric config
}

Когда вы запускаете команду gradle, передайте параметр командной строки -PtestFilter=your_filter, где ваш фильтр будет чем-то в полном имени класса тестового класса (за исключением постфикса Test).

Недостатком этого является то, что когда я делаю опечатку в своем testFilter, Robolectric выполняет их все (вместо того, чтобы не выполнять ни одного).

person hidro    schedule 26.01.2015