3

我对如何从命令行(gradle 任务)单独运行 Espresso 测试感兴趣(运行组/套件测试然后关闭应用程序,然后运行另一个组/测试套件)。

发现实现JUnit 测试套件是可行的,但并不真正了解它在仪器测试上下文中的幕后情况如何。它是否为每个测试套件启动单独的进程?Github 上有示例应用程序,但如何从终端执行它?

另一个有趣的发现是分片测试。但是,它是一句话文档。

可能有人可以分享任何单独运行 Espresso 测试的经验。

4

2 回答 2

2

其中大部分记录为 AndroidJUnitRunner 的一部分:https ://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner.html

缺少的关键部分是如何通过 Gradle 传递这些参数。您可以通过在命令行中指定选项来做到这一点,如下所示:

./gradlew connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=*The full name of your test suite goes here*
于 2017-07-14T19:12:13.753 回答
1

我建议使用Spoon库单独或在多个设备上并行运行测试。您可以使用 jar 文件或使用同一页面上提到的Spoon gradle 插件。他们都有足够的文档来帮助您进行设置。

您还可以使用 Spoon 运行单个测试,命令如下所示:

./gradlew yourSpoonTaskName -PspoonClassName=com.yourPackageName.blah.ClassName
    -PspoonMethodName=methodName

为了知道yourSpoonTaskName运行的是什么./gradlew tasks

此外,在您的 build.gradle 文件中添加以下勺子配置:

spoon {
    // for debug output
    debug = true

    // To grant permissions to Android M >= devices
    grantAllPermissions = true

    // for sharding
    /*
    this will execute tests in parallel on multiple devices.
    */
    shard = true

    // Add this to run a specific test class & method 
    if (project.hasProperty('spoonClassName')) {
        className = project.spoonClassName
    }

    if (project.hasProperty('spoonMethodName')) {
        methodName = project.spoonMethodName
    }    
}

如果您对 Spoon 不感兴趣并且只想要一个简单的解决方案,请使用以下命令运行单个测试:

am instrument -w -r -e class com.packageName.blah.TestName#methodName com.packageName.blah.YourIntrumentationRunnerName

如果您在 AndroidStudio 中右键单击测试名称并运行它,您可以轻松确定这些值。在控制台中,您将看到运行测试时打印的整个命令。

于 2017-07-18T03:17:38.690 回答