运行特定的 XCUITests 集
Posted
技术标签:
【中文标题】运行特定的 XCUITests 集【英文标题】:Run specific set of XCUITests 【发布时间】:2016-08-25 15:15:05 【问题描述】:问题是我希望能够运行特定数量或一组 XCUITest,例如在 Calabash 中。在 Calabash 中,您可以运行一组标有特定标签的测试。 所以,我想知道我能做些什么来实现这一目标吗? 我知道我可以按捆绑甚至方案拆分一组测试,但这不是我想要的。
所以,到目前为止,我看到您只能运行特定测试,但不能运行一组测试。
编辑:
基本上我希望能够运行类似的命令:
xcodebuild test -workspace -scheme -destination -only-testing:UITestBundle -tag
通过这种方式,我将能够只测试与我的项目的一小部分相关的特定功能,因此不需要运行所有可能需要大量时间的包。我可以在 CI 中设置它。当我需要运行不同的测试集时,不必每次都更改我的代码。
【问题讨论】:
【参考方案1】:您可以通过 Launch 参数控制执行,并根据相应的值跳过测试。创建一个像 IsSkippingTests
这样的 Launch Arg 并根据您的要求设置一个值,然后在每个测试开始时您可以添加如下代码:
guard LA.valueOfLA("-IsSkippingTests") == "requiredFunctionality" else return
并定义一个结构LA
,其中将包含valueOfLA
静态方法:
public struct LA
static public func valueOfLA(key: String) -> String?
var arguments = NSProcessInfo.processInfo().arguments
if let index = arguments.indexOf(key) where index + 1 < arguments.count
return arguments[index + 1]
return nil
因此,根据您提供的值,您可以执行一组测试并跳过您不想要的测试。也可以设置多个值,修改valueForLA方法来处理。
【讨论】:
是的,但是每次我想运行另一组测试时,我都需要修改我的代码库。当您暂时需要完全禁用一些测试时,据我所知,这种方法非常好,但我需要更动态的东西。诸如运行配置或动态捆绑构建之类的东西,因此我可以快速更改设置并在 CI 上运行特定测试。【参考方案2】:现在可以使用 xcode 8。查看此视频
https://developer.apple.com/videos/play/wwdc2016/409/。
【讨论】:
所以,这不是我想要的。因为每次当您需要更改不同的测试集时,您都需要创建新的测试包,这有点让人头疼。另外,我正在使用 CI,因此很难动态配置要运行的确切测试集。以上是关于运行特定的 XCUITests 集的主要内容,如果未能解决你的问题,请参考以下文章
iOS Swift UI Tests (XCUITests) 稳定性问题 - fastlane scan
在 XCUITests 中,如何等待多个 ui 元素的存在?