AndroidJUnit4和参数化测试

Gaë*_*tan 17 junit android parameterized android-testing

Google为Android编写测试提供了新的类,尤其是使用jUnit 4:https://developer.android.com/tools/testing-support-library/index.html

我想知道是否可以使用来自jUnit的AndroidJUnit4运行器以及参数化运行器?

Pse*_*che 14

当前接受的答案没有提供解释,并且链接的示例不能很好地显示需要做什么.这是一个更完整的解释,希望能节省一些人花时间把它搞清楚.


虽然文档没有让这个显而易见,但实际上设置起来却非常简单!只要testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"在模块build.gradle文件中设置,就可以使用带有检测Android测试的其他跑步者.如果已设置,则无需@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"
    }
}
Run Code Online (Sandbox Code Playgroud)

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您还需要单独运行某些测试而其他测试在同一测试类中进行参数化,请参阅以下有关使用运行器的答案Enclosed:https://stackoverflow.com/a/35057629/1428743