从swift代码运行终端“扫描”命令

时间:2016-06-21 08:48:58

标签: xcode swift macos shell

我已安装扫描以自动执行测试过程。我使用以下网站的流程:http://qualitytesting.tumblr.com/post/141771752059/run-a-subset-of-xctest-tests-with-fastlanescan

我有两个项目是ios,另一个是Osx运行ios项目。

在osx项目中,我初始化扫描文件,并在那里添加了ios项目的方案。

当我运行

scan 
来自终端的

命令,它成功运行了ios项目。

但如果我使用下面的代码:

class func shell(args: String...) -> Int32 {
    let task = NSTask()
    task.launchPath = "/usr/bin/env"
    task.arguments = args
    task.currentDirectoryPath = "/Users/username/Desktop/Xocde/mainSwiftAutomation/"
    task.launch()
    task.waitUntilExit()
    return task.terminationStatus
}

然后调用函数:

classname.shell("scan")

它显示以下错误:

env: scan: No such file or directory

请帮忙。

2 个答案:

答案 0 :(得分:1)

如果您更改

,将会运行扫描
task.launchPath = "/usr/bin/env"

task.launchPath = "/usr/local/bin/scan"

如果您的扫描安装在那里。这是我机器上的问题。

应用程序仍然无法找到xcpretty来生成报告,但我的UI测试确实在运行。

如果将带有shebang(#!/usr/bin/env swift)的代码添加到常规run_tests.swift文件(而不是命令行工具项目),那么您应该能够在没有问题的情况下运行它行:

$ swift run_tests.swift

...从Swift代码运行测试但不通过Xcode运行。

答案 1 :(得分:0)

我已经解决了这个问题,如下所示:

我使用scan命令创建shell脚本,而不是在我的项目文件夹中找到shell脚本并使用我的代码运行它。

但是我将我的taskpath更改为

task.launchPath = "/usr/local/bin/scan"

从命令行转到/ usr / local / bin / scan并使其可执行,如下所示:

sudo chmod +x /usr/local/bin/scan

最后我运行我的shell脚本,运行良好。