使用Android测试筛选器(@ SmallTest,@ MediumTest,@ LargeTest)进行本地单元测试

时间:2018-10-25 11:42:58

标签: android unit-testing

我正在尝试将android支持过滤器@ SmallTest,@ MediumTest,@ LargeTest等用于本地单元测试。不幸的是,我不知道在通过gradle调用单元测试时如何过滤它们。

我只找到了仪器化测试的调用示例。

您有建议吗?

预先感谢

-编辑- 我的计划是引入更多的注释,例如“ externalTests”或“ benchmarking”,这些注释可能会超出我的常规测试范围(例如每晚或其他)。另一个想法是在gradle配置中过滤测试目录。但是我认为注释会更好...

1 个答案:

答案 0 :(得分:0)

我找到的解决方案是JUnit Categories。通过类别,您可以使用特定的界面标记测试,并在gradle文件中进行过滤。 我创建了一个界面

package com.mypackage.testing.category;

public interface Benchmark {
    // this is just a marker interface
}

在测试中可以如下使用

public class CategoryTest {

    @Test
    public void unitTest() {
        System.out.println("I am a unit test");
    }

    @Test
    @Category(Benchmark.class)
    public void benchmarkTest() {
        System.out.println("I am a benchmark test");
    }
}

可以在gradle文件中过滤不同的类别,例如带有gradle参数benchmark

 android {
    testOptions {
        unitTests.all {
            useJUnit()
            if (project.hasProperty("benchmark").booleanValue()) {
                options {
                    includeCategories 'com.mypackage.testing.category.Benchmark'
                }
            } else {
                options {
                    excludeCategories 'com.mypackage.testing.category.Benchmark'
                }
            }
        }
    }
}