android - 使用 Android 测试过滤器(@SmallTest、@MediumTest、@LargeTest)进行本地单元测试

标签 android unit-testing

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

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

你有什么建议吗?

提前致谢

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

最佳答案

我找到的解决方案是JUnit Categories 。通过类别,您可以使用特定接口(interface)标记测试,并在 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'
                }
            }
        }
    }
}

关于android - 使用 Android 测试过滤器(@SmallTest、@MediumTest、@LargeTest)进行本地单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52988472/

相关文章:

java - 在 android 中创建区域设置特定目录的 -b+ 标志是什么?

Windows 7 上的 Android NDK 环境变量

unit-testing - 在宏上下文测试中使用 panic::catch_unwind 以解决单元测试中的 panic 问题

java - JUnit 和 hamcrest : could containsInAnyOrder() tell more about the mismatch?

asp.net-mvc - 我如何为我的单元测试实现/构建/创建 'in memory database'

android - [react-native]如何实现mask效果

android - 蓝牙耳机的 startVoiceRecognition 不工作

java - 可以显示设备摄像头的实时输出吗?

java - 如何模拟 RowMapper?

javascript - Sinon stub 是如何工作的?