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

时间:2017-07-28 00:51:21

标签: swift xcode xcode-ui-testing

我试图在每次测试后重置模拟器。 我找到了最好的方法,就是执行

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 \标识符 请帮忙。 我试图在每次测试后重置模拟器。

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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