Swift测试:初级开发者从何入手

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

为什么测试不是“走过场”,而是你的救生圈

\n\n

想象一下:你用Swift写了一个很棒的应用程序,一切运行正常,朋友们赞不绝口。但一周过去了,你添加了一个新功能——然后啪!一切都崩溃了。熟悉吗?如果没有——要么你是天才,要么你还没有遇到过真正的开发。代码测试不是无聊的强制任务,而是一个能节省你数小时焦虑、让你成为自信开发者的工具。

\n\n

在本文中,我们将探讨如果你是新手,如何开始Swift测试。你将了解什么是XCTest,如何编写单元测试和UI测试,并获得现成的代码示例。开始吧!

\n\n

什么是Swift测试,为什么需要它

\n\n

测试是验证你的代码是否按预期工作的过程。在Swift世界中,用于此的主要框架是XCTest。它内置于Xcode中,允许你编写任何级别的测试:从检查单个函数到模拟用户点击按钮。

\n\n

以下是为什么你现在就应该掌握Swift测试的三个主要原因:

\n
    \n
  • 对代码的信心。你不再害怕更改或重构代码——测试会为你保驾护航。
  • \n
  • 节省时间。花10分钟写测试,比花2小时在生产环境中寻找错误要好。
  • \n
  • 文档。测试是你代码的活文档。新开发者(或一个月后的你)无需多言就能理解逻辑。
  • \n
\n\n

对于初学者来说,iOS测试可能看起来很复杂,但实际上,第一步只需5分钟。

\n\n

环境设置:5分钟内完成第一个测试

\n\n

打开Xcode并创建一个新项目(File → New → Project → App)。确保Include Tests复选框处于激活状态。Xcode会自动创建两个目标:

\n
    \n
  • YourAppTests — 用于单元测试。
  • \n
  • YourAppUITests — 用于UI测试。
  • \n
\n\n

如果项目已存在,请手动添加测试目标:File → New → Target → iOS Unit Testing Bundle。

\n\n

现在点击文件YourAppTests.swift。你会看到一个继承自XCTestCase的类模板。删除所有内容并编写你的第一个测试:

\n\n
import XCTest\n@testable import YourApp\n\nfinal class FirstTests: XCTestCase {\n\n    func testExample() {\n        let result = 2 + 2\n        XCTAssertEqual(result, 4, "数学出错了!")\n    }\n}\n
\n\n

点击func testExample行左侧的菱形并选择Test。如果出现绿色勾号——恭喜你,你刚刚用Swift编写了第一个单元测试!

\n\n

请注意@testable import YourApp。这是关键一行:它允许测试访问你应用程序中的internal类。

\n\n

单元测试:检查应用程序逻辑

\n\n

单元测试是基础。它们检查单个函数、方法或类。让我们为一个简单的计算器编写测试。

\n\n

创建要测试的代码

\n\n

在主目标(而不是测试目标!)中添加一个新的Swift文件,包含以下类:

\n\n
import Foundation\n\nstruct Calculator {\n    func add(_ a: Int, _ b: Int) -> Int {\n        return a + b\n    }\n    \n    func divide(_ a: Int, _ b: Int) throws -> Int {\n        guard b != 0 else {\n            throw CalculationError.divisionByZero\n        }\n        return a / b\n    }\n}\n\nenum CalculationError: Error {\n    case divisionByZero\n}\n
\n\n

编写测试

\n\n

在测试文件(提醒一下,它在YourAppTests组中)中,我们编写:

\n\n
import XCTest\n@testable import YourApp\n\nfinal class CalculatorTests: XCTestCase {\n\n    var calculator: Calculator!\n\n    override func setUpWithError() throws {\n        calculator = Calculator()\n    }\n\n    override func tearDownWithError()                

博客

书籍推荐