Android Espresso 测试套件

3
我对如何从命令行(gradle任务)单独运行Espresso测试感兴趣(运行组/套件测试,然后关闭应用程序,再运行另一组/套件测试)。
发现可以实现JUnit测试套件,但不太了解在仪器化测试的上下文中它是什么样子。它会为每个测试套件启动单独的进程吗?有Github上的示例应用程序,但如何从终端执行它?
另一个有趣的发现是分片测试。然而,它只有一句话的文档。
也许有人可以分享单独运行Espresso测试的任何经验。
2个回答

2

尝试了这个命令,但仍然没有成功。无法回忆起它抛出了什么样的错误。无论如何,我将放弃执行单元测试套件,因为我需要的是测试分片。还是谢谢。 - Robertas Setkus

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中右键单击测试名称并运行它,就可以轻松确定这些值。在控制台中,当测试正在运行时,您将看到整个命令被打印出来。

已经尝试过Spoon了。然而,令人惊讶的是它并没有解决我的问题。我正在处理的问题是,由于著名的“OutMemoryError”,Espresso测试崩溃。内存泄漏在一个大型依赖项的第三方库上,无法替换。我认为在多个模拟器上运行测试将暂时解决我的问题,同时我会找到适当的解决方案。 - Robertas Setkus
如果您早些时候在初始陈述中提到了OutMemoryError问题,那就更好了。您想知道的只是如何进行测试分片,我已经告诉过您了。如果您继续详细解释,我将非常乐意回答您的实际问题。一些日志也会很有帮助。 - mark w.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接