Swift:如何通过运行shell命令来重置模拟器

问题描述:

我想在每次测试后重置模拟器。 我发现做到这一点的最好办法,是执行Swift:如何通过运行shell命令来重置模拟器

xcrun simctl erase all 

,但我不知道如何在一个迅速的文件来执行它添加一个shell命令。

我试图

import Foundation 
func shell(_ args: String...) -> Int32 { 
    let task = Process() 
    task.launchPath = "/usr/bin/env" 
    task.arguments = args 
    task.launch() 
    task.waitUntilExit() 
    return task.terminationStatus 
    } 

但得到一个错误,方法U \标识未发现 请帮助。 我试图在每次测试后重置模拟器。

我可以从命令行从模拟器中卸载特定应用程序吗?或任何其他方式之间的每个测试,在tearDown()

我有一个类似的问题,并能够解决它与SBTUITestTunnel。 我选择使用这个框架,因为我还必须在测试应用程序和我的实际应用程序之间进行通信以配置测试状态。

通过实施SBTUITestTunnel,您可以指定启动选项,您需要的是SBTUITunneledApplicationLaunchOptionResetFilesystem。

app.launchTunnel(withOptions: [SBTUITunneledApplicationLaunchOptionResetFilesystem]) { 
// do additional setup before the app launches 
// i.e. prepare stub request, start monitoring requests 
} 

我建议看看SBTUITestTunnel,因为它可以让你做一些其他非常强大的事情。

+0

这是一个很好的建议,但它是一种解决方法。我将首先尝试通过shell命令来完成,如果全部失败,请探索新的框架。 – Vinayaka

+1

如果您需要从运行测试的主机运行特定的shell命令,您可以考虑[SBTUITestTunnelHost](https://github.com/Subito-it/SBTUITestTunnelHost),这是我沿着SBTUItestTunnel开发的另一个工具。它允许从UI测试目标运行任意shell命令。 –

+1

我在测试中添加了预建步骤。转到编辑方案 - >单击测试 - > +旁边的三角形,并添加预构建步骤 - > xcrun simctl卸载引导com.XYZ.client.main – Vinayaka