L'attuale risposta accettata non fornisce una spiegazione e l'esempio collegato non è ottimo per mostrare cosa è necessario fare. Ecco una spiegazione più completa che, si spera, salverà qualcuno dal momento in cui l'ho capito.
Mentre la documentazione non rende questo super ovvio, in realtà è sorprendentemente facile da configurare! Sei in grado di utilizzare un altro corridore con test Android strumentati, purché imposti il numero testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
nel file del modulo build.gradle
. Se è impostato, non è necessario impostare in modo esplicito @RunWith(AndroidJUnit4.class)
nei test strumentati.
Un esempio minimo sarebbe simile a questa:
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);
}
}
Se si ha anche la necessità di eseguire alcuni test individualmente e altri parametrizzata nel stessa classe di test, vedere questa risposta sull'utilizzo del corridore Enclosed
: https://stackoverflow.com/a/35057629/1428743
non c'è un esempio pertinente per la risposta che segue quel collegamento. –