使用 Xcode 6 中的每个构建自动运行测试

Posted

技术标签:

【中文标题】使用 Xcode 6 中的每个构建自动运行测试【英文标题】:Automatically run tests with each build in Xcode 6 【发布时间】:2015-06-06 12:47:58 【问题描述】:

当我跑步时

xcodebuild -workspace ~/Documents/JudgecardXSwift/JudgecardXSwift.xcworkspace -scheme JudgecardXSwift -destination 'platform=ios Simulator,name=iPhone 6' clean test

从命令行,我可以成功运行我的所有测试。

现在我想在我的 Xcode 项目中添加一个运行脚本阶段,这样每次我运行应用程序时它都会运行我的测试。但是,当我使用上面的 xcodebuild 命令添加运行脚本阶段时,我的构建总是挂起:

如你所见,它一定是挂在我添加的运行脚本阶段,因为它在标题为Run custom shell script 'Copy Pods Resources'之前刚刚完成了构建阶段:

我使用xcodebuild 命令添加运行脚本阶段的方法是否是在每次构建时自动运行测试的正确方法?为什么它会导致我的构建过程挂起?每个xcodebuild 命令通过其运行脚本阶段启动另一个命令是否会导致某种无限循环?

【问题讨论】:

【参考方案1】:

这里有点晚了,所以我想补充一下我的个人经验,但是 xcodebuild 将为您启动另一个构建,重要的是 xcodebuild 通过命令行进行,因为您可能无法按预期运行构建阶段。我只经历过静默失败的复制命令,我可以在日志文件中查看命令,但实际上并没有复制文件。

因此它可能会遇到无限循环,但更有可能是它正在运行该构建,点击 xcodebuild 命令,然后正常构建,而某些构建阶段没有正确执行,因此没有运行您的测试。

【讨论】:

【参考方案2】:

在 Xcode 9 中这是可行的。我添加了一个运行脚本:

echo "warning: ??? Started running myTests ???"

xcodebuild -sdk iphonesimulator -workspace myWorkspace.xcworkspace -scheme "myWorkspaceTests" test -destination 'platform=iOS Simulator,name=iPhone X,OS=11.2' CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO

如果其中一项测试失败,您将收到构建错误。

【讨论】:

以上是关于使用 Xcode 6 中的每个构建自动运行测试的主要内容,如果未能解决你的问题,请参考以下文章

自动化 Xcode 模拟器:如何从终端构建和启动应用程序

抑制 Xcode 中的运行时自动布局警告

iPhone 的 XCode 测试自动化

如何在每个构建上自动执行单元测试?

删除 XCode 8 中的单元测试

XCode 6.0.1 ios 7 自动布局