AndroidJUnit4和参数化测试

时间:2015-04-09 12:03:48

标签: android junit android-testing parameterized

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

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

1 个答案:

答案 0 :(得分:13)

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

虽然文档没有让这个显而易见,但实际上设置起来却非常简单!只要在模块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"
    }
}

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转轮:https://stackoverflow.com/a/35057629/1428743