我对如何从命令行(gradle任务)单独运行Espresso测试感兴趣(运行组/套件测试,然后关闭应用程序,然后运行另一组/测试套件)。
发现实现JUnit Test Suites是可行的,但实际上并不了解在仪器测试的上下文中它是如何看待的。它是否为每个测试套件启动单独的进程?有sample application on Github但是如何从终端执行它?
另一个有趣的发现是Sharding tests。但是,这是一句话文件。
可能有人可以分享任何单独运行Espresso测试的经验。
答案 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中的测试名称并运行它,则可以轻松确定这些值。在控制台中,您将看到在运行测试时打印整个命令。