AndroidJUnit4 и параметризованные тесты
Google предоставляет новые классы для написания тестов для Android, особенно с использованием jUnit 4: https://developer.android.com/tools/testing-support-library/index.html
Мне было интересно, можно ли использовать бегун AndroidJUnit4, как и Parameterized, из jUnit?
1 ответ
Текущий принятый ответ не дает объяснения, и связанный пример не очень хорош для того, чтобы показать, что нужно сделать. Вот более полное объяснение, которое, мы надеемся, спасет кого-то от траты времени, которое я потратил на выяснение этого.
Хотя документация не делает это супер очевидным, на самом деле это удивительно легко настроить! Вы можете использовать другого бегуна с инструментальными тестами 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