繁体   English   中英

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

[英]run the terminal “scan” command from swift code

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

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

在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

请帮忙。

如果您进行更改,扫描将运行

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运行测试的。

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

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

但是我将工作路径更改为

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

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

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

最终,我运行了我的shell脚本,并且运行良好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM