Swift的行为驱动开发框架

XCBlog上的原始帖子在这里

最近,有多家公司在寻找使用Swift编写的iOS应用程序的BDD支持工具。 由于Cucumber没有对Swift的官方支持,因此大多数人都在努力为Swift项目寻找合适的BDD工具。 这篇文章将重点介绍一些在Swift应用程序中支持BDD的工具。 BDD aka行为驱动开发是通过使用Gherkin或类似格式的可执行规范来开发应用程序的过程,以便程序员可以将这些规范用于开发,而业务人员可以将其用于需求规范或实时文档。 BDD是一种由内而外的开发方法。 您可以在此处阅读有关BDD的更多信息。

由于缺少适当的BDD工具(如Swift中的Cucumber),iOS世界中的行为驱动开发始终面临挑战。 在网站开发中,BDD选项有特定于语言的选项。 有一些解析Gherkin语言语法的工具(Given / When / Then),我们可以执行BDD场景,例如Ruby的Cucumber,JavaScript的CucumberJS,Java的Cucumber-JVM,C#的SpecFlow,PHP的Behat等。适用于Spec级BDD的工具,例如Ruby的RSpec,PHP的PHPSpec,JavaScript的Jasmine。 但是,在iOS世界中,执行BDD的选项非常有限,尤其是对于Swift。 在本文中,我们将探讨Swift iOS应用程序当前使用的BDD选项。

使用诸如带Appiumor Calabash的Cucumber之类的工具可以轻松实现Gherkin Style BDD,但要在Xcode中支持BDD并非易事。 由于缺少适当的BDD工具(例如Swift中的Cucumber),iOS世界中的BDD始终具有挑战性。 Swift中没有可用的Gherkin解析器,因此Cucumber社区建议使用Objective-C Gherkin解析器。 这里提到了许多BDD工具来编写较低级别的测试,但是为了编写UI级别的测试,很少有选项可能没有Ruby中Cucumber的所有核心功能。

XCTest-Gherkin是另一个可用于在Xcode项目中实现BDD的工具。 在README文件上有关于其功能和限制的详细信息。 它纯净的表示形式,我们仍然可以使用String格式编写GWT(当时提供),但是主要缺点是我们无法编写或执行.feature文件,并且缺少许多核心的黄瓜功能,例如标签,过滤功能。 您需要使用CocoaPods或Carthage将XCTest-Gherkin作为UI测试目标的依赖项。

XCFit是另一个纯Swift实现,用于在Xcode项目中支持BDD。 它还提供了Xcode模板,以开始使用BDD,页面对象模式和面向协议的模式。 XCFit在Swift框架中有一些预定义的步骤,但是快速好处来自Xcode模板。 有关面向协议的BDD的更多信息,请参见此处。 另一个主要缺点是我们无法编写或执行.feature文件,并且缺少许多核心的黄瓜功能,例如标签,过滤功能。

Cucumberish是一个测试框架,可用于以Gherkin格式编写功能,并可从Xcode执行。 Cucumberish被编写为Objective-C,并使用来自Cucumber存储库的Objective-C Gherkin解析器。 能够从Xcode执行Gherkin功能文件非常好,但是Cucumberish有一些错误,在大多数情况下需要解决方法。 在完全Swift项目中引入Objective-C依赖关系也有些棘手。 可以使用CocoaPods或Carthage将黄瓜导入UI测试目标。

Plowman是Gherkin语言的另一种测试运行器,我们可以从命令行编写和执行功能文件。 在Ploughman的README文件中有很好的信息。 这缺少核心Cucumber的许多功能,例如示例,标签和过滤器。 可以使用Swift Package Manager导入此软件包。

SwiftGherkin是另一个Swift软件包,用于处理基于gherkin.feature的文件。 这是一个新创建的程序包,它支持功能,方案,方案大纲和步骤,但是将来还会支持所有其他核心黄瓜功能。 您可以继续关注该存储库,以获取有关此软件包的更多新闻。 该软件包只能与Swift Package Manager一起使用。

与用于Ruby的RSpec,用于PHP的PHPSpec,用于JavaScript的Jasmine相似,很少有工具可以为较低级别的实现编写规范。 我们将在Swift中看到那些规范级别的BDD选项。

Sleipnir是Swift的规范级BDD样式框架,受Cedar启发。 来自Objective-C。 这可能是有史以来第一个为Swift宣布的BDD样式的框架。 您可以在此博客中了解有关BDD对Swift的启发和介绍的更多信息。 但是,Sleipnir没有使用XCTest框架,目前还不支持iOS。 CocoaPods也未正确支持它。

Quick目前是Swift非常成熟的RSpec样式框架。 Quick随附Nimble Matcher,使DSL更具可读性。 Quick与CocoaPods,Carthage和Swift Package Manager兼容。 有时,它被用来代替Apple自己的XCTest框架,因为结合使用Quick和Nimble可以使规范更具可读性。 有许多使用Quick的流行项目,其中一些在此页面中列出。

行为驱动开发是一种协作过程,它不依赖于工具,但是拥有那些BDD支持工具可以使协作更加容易。 这篇文章的目的是列出可用于支持Swift项目的BDD的主要工具。 如果我错过任何工具,请告诉我。

像XCBlog的 XCTEQ 发布的帖子一样 您可能还喜欢我们的一些服务,例如访客博客或Mobile DevOps(CI / CD)或测试自动化。 Github 搜索我们的 服务 ,开源项目, 或者在 Twitter Facebook Youtube LinkedIn 上关注我们 下载我们的 XCBlog iOS应用程序以离线阅读博客。

X CTEQ 一家专门从事基于Mobile DevOps,CI / CD,Mobile,AI / ML的测试自动化Checkout XCTEQ产品和服务的公司, 网址 http://www.xcteq.co.uk 或写信给我们info@xcteq.co。英国..