AndroidJUnit4和参数化测试

26
1个回答

23

虽然文档并没有明确说明,但实际上设置起来非常容易!只要在模块的build.gradle文件中设置testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner",就可以使用另一个带有仪器化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"
    }
}

样例参数化测试.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 runner的此答案:https://dev59.com/vlwY5IYBdhLWcg3wTWMu#35057629


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接