运行特定的 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 元素的存在?

XCUITests - 通过命令行传递环境变量

Firebase 测试实验室是不是支持 iOS XCUITests 附件?

以编程方式启动 XCUITests?

XCode9:XCUITest 给出 Runner UIAccessibility 错误