Swift - 解决测试驱动开发中的构建错误?

Posted

技术标签:

【中文标题】Swift - 解决测试驱动开发中的构建错误?【英文标题】:Swift - Getting around build errors in test-driven development? 【发布时间】:2015-01-31 02:00:55 【问题描述】:

我开始学习如何进行测试驱动开发,并且正在使用 Swift。我想有一个应该失败的测试然后编写让它通过所需的代码。据我了解,测试应该成功运行,只是失败了。但是,在 Swift 中,当我尝试编写一个测试来检查对象的特定属性的值时,如果该类还没有这样的属性(因为我想在创建之前先编写测试它适用于该类)我没有得到失败的测试,而是在尝试构建和运行测试时出现构建错误。错误是测试试图访问给定对象不存在的属性。我会以错误的方式解决这个问题吗?或者这些测试构建破坏错误是否假设是我在 Swift 中执行 TDD 时得到的?谢谢!

【问题讨论】:

【参考方案1】:

根据鲍伯叔叔的3 Rules of Tdd:

    不允许您编写任何足以导致失败的单元测试; 编译失败就是失败

(强调我的)。所以实际上不需要“测试成功运行” - 编译错误是编写代码的好借口:)

【讨论】:

我很高兴你引用了鲍勃叔叔的话!我记得他在他的一次演讲中说过,但我找不到。你是绝对正确的,编译错误被视为测试失败。我正在我的新博客clean-swift.com 上使用鲍勃叔叔的清洁架构在 Swift 中编写一个测试系列。您可能会发现它很有用。【参考方案2】:

TDD 是个好主意,但不要忘记运用一些常识。在这种情况下,将构建错误视为测试失败。在某些时候,您必须创建类和属性才能构建代码。然后,详细说明你的测试,让它做一些失败的事情,编写让它通过的代码,然后继续。

【讨论】:

以上是关于Swift - 解决测试驱动开发中的构建错误?的主要内容,如果未能解决你的问题,请参考以下文章

构建 Swift 框架测试失败

Travis CI 构建 [Cocoapod Swift] 失败,没有“这样的模块...”错误

swift 构建OSX拖放操场:将dragndrop.swift抛出到共享源中,然后测试单个playgro中的示例

前端单元测试以及自动化构建入门

测试目标中的 Swift Typhoon 错误 - 不是 Typhoon Assembly 的子类

PHP 中的测试驱动开发