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

Swift: How to reset simulator by running shell command

我试图在每次测试后重置模拟器。 我发现最好的方法是执行

xcrun simctl erase all

但我不知道如何在 swift 文件中添加 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\identifier 请帮忙。 我正在尝试在每次测试后重置模拟器。

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

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

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

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

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