Android Espresso测试套件

时间:2017-07-14 14:03:52

标签: android unit-testing android-emulator android-espresso android-junit

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

发现实现JUnit Test Suites是可行的,但实际上并不了解在仪器测试的上下文中它是如何看待的。它是否为每个测试套件启动单独的进程?有sample application on Github但是如何从终端执行它?

另一个有趣的发现是Sharding tests。但是,这是一句话文件。

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

2 个答案:

答案 0 :(得分:1)

大部分内容都记录为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*

答案 1 :(得分:1)

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

你也可以使用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中的测试名称并运行它,则可以轻松确定这些值。在控制台中,您将看到在运行测试时打印整个命令。