AndroidJUnit4 и параметризованные тесты

Google предоставляет новые классы для написания тестов для Android, особенно с использованием jUnit 4: https://developer.android.com/tools/testing-support-library/index.html

Мне было интересно, можно ли использовать бегун AndroidJUnit4, как и Parameterized, из jUnit?

1 ответ

Решение

Да, вы можете проверить официальный образец Google здесь.

Текущий принятый ответ не дает объяснения, и связанный пример не очень хорош для того, чтобы показать, что нужно сделать. Вот более полное объяснение, которое, мы надеемся, спасет кого-то от траты времени, которое я потратил на выяснение этого.


Хотя документация не делает это супер очевидным, на самом деле это удивительно легко настроить! Вы можете использовать другого бегуна с инструментальными тестами Android, пока вы устанавливаете testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" в вашем модуле build.gradle файл. Если это установлено, вам не нужно явно устанавливать @RunWith(AndroidJUnit4.class)в ваших инструментальных тестах.

Минимальный пример будет выглядеть так:

build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 26

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

SampleParameterizedTest.java:

@RunWith(Parameterized.class)
public class SampleParameterizedTest {

    @Parameter(value = 0)
    public int mTestInteger;

    @Parameter(value = 1)
    public String mTestString;

    @Parameters
    public static Collection<Object[]> initParameters() {
        return Arrays.asList(new Object[][] { { 0, "0" }, { 1, "1" } });
    }

    @Test
    public void sample_parseValue() {
        assertEquals(Integer.parseInt(mTestString), mTestInteger);
    }
}

Если у вас также есть необходимость запускать некоторые тесты по отдельности, а другие параметризовать в одном и том же классе тестов, см. Этот ответ по Enclosed бегун: /questions/26011792/pri-ispolzovanii-parameterized-junit-mozhno-li-zapuskat-nekotoryie-testyi-tolko-odin-raz/26011806#26011806

Другие вопросы по тегам