当前位置: 首页 > news >正文

网站建设分工个人网站seo入门

网站建设分工,个人网站seo入门,深圳微信网站建设报价,信息行业网站建设概述 从 WWDC 24 开始,苹果推出了全新的测试机制:Swift Testing。利用它我们可以大幅度简化之前“老态龙钟”的 XCTest 编码范式,并且使得单元测试更加灵动自由,更符合 Swift 语言的优雅品味。 在这里我们会和大家一起初涉并领略…

在这里插入图片描述

概述

从 WWDC 24 开始,苹果推出了全新的测试机制:Swift Testing。利用它我们可以大幅度简化之前“老态龙钟”的 XCTest 编码范式,并且使得单元测试更加灵动自由,更符合 Swift 语言的优雅品味。

在这里插入图片描述

在这里我们会和大家一起初涉并领略 Swift Testing 的测试之美。

在本篇博文中,您将学到如下内容:

  • 概述
  • 4. #expect 宏
  • 5. #require 宏
  • 6. Swift Testing 目前的不足
  • 总结

测试为先,质量为王!无测试,不软件!

那还等什么呢?Let’s testing!!!😉


4. #expect 宏

如果说前面介绍的 @Test 宏为测试奠定了基调,那么 #expect 宏则无疑是当之无愧的测试核心所在。

在这里插入图片描述

在以往“陈言老套”的 XCTest 体系中,我们往往需要用超多 XCTAssertXXX 之类的方法来验证测试通过与否:

在这里插入图片描述

记住这些“聚蚊成雷”般的方法可不是件容易的活。不过这一切在 Swift Testing 都不是事儿了,因为不管现实如何千变万化我们都只需一个 #expect 宏即可统统搞定!

import Testingfunc add(_ a: Int, _ b: Int) -> Int {a + b
}@Test func verifyAdd() {let result = add(1, 2)#expect(result == 3)
}

上面是 #expect 宏最简单的形式,即验证结果是否为真。如此这般,多个 #expect 连续助攻自然也是不在话下:

@Test func verifyMagicNumber() {let number = magicNumber()#expect(number != 0)#expect(number > 10)#expect(number <= 100)
}

我们还可以利用 #expect 来验证被测试方法是否抛出错误、以及是否抛出指定错误:

enum MyError: Error {case invalidInput
}func throwingFunction() throws {throw MyError.invalidInput
}@Test func verifyThrowingFunction() {#expect(throws: MyError.self) {try throwingFunction()}
}

在上面的代码中,如果 throwingFunction 抛出 MyError 错误则表示测试通过!

我们还可以更进一步,细粒度控制方法抛出错误时的测试行为,比如仅当抛出指定 MyError.invalidInput 错误时才能使测试 Pass:

@Test func verifyThrowingFunction() {#expect {try throwingFunction()} throws: { error inguard let myError = error as? MyError else {return false}return myError == .invalidInput}
}

Swift Testing 中 #expect 的能耐远不止于此,更多它的使用介绍请小伙伴们参考苹果官方开发文档。

5. #require 宏

除了 #expect 之外,在 Swift Testing 中还有另一个不可或缺的“超级助手”,那就是 #require 宏:

在这里插入图片描述

简单来说,#require 宏的精妙之处在于它可以让我们立即判断条件是否满足,并提早结束测试。具体来说,它会在测试可选值(Optional Value)为 nil (或者其它条件不满足)时让测试失败并抛出错误。

@Test func verifyOptionalFunc() throws {let result = optionalFunc()try #require(result != nil)#expect(result! > 0)
}

还拿之前博文中 Item 的“栗子”来说,我们可以写一个验证 Model 中第一个 Item 名称的方法,不过由于我们忘记了创建 Model 中的 items,所以下面的测试会在 #require 那行抛出错误,因为此时 items 数组为空:

@Test
func firstItemCheck() throws {let model = Model.sharedlet firstItem = try #require(model.items.first)#expect(firstItem.name == "大熊猫侯佩")
}

失败的测试结果如下图所示:
在这里插入图片描述

更进一步,我们还可以利用 Issue 对象来记录测试遇到的任何问题,它们都会在测试日志中分毫不差的反映出来:

@Test
func firstItemCheck() {let model = Model.shareddo {let firstItem = try #require(model.items.first)#expect(firstItem.name == "大熊猫侯佩")} catch {Issue.record("Model 中没有任何数据,忘记创建了???")}
}

测试 firstItemCheck() 方法依旧失败,不过此时我们可以在 Xcode 控制台中看到具体失败的信息:

在这里插入图片描述

现在,借助于 Swift Testing 中这些宏的“古道热肠”,我们编写的单元测试必将大放异彩、拔山盖世!棒棒哒!💯

6. Swift Testing 目前的不足

虽然 Swift Testing 较之以前的 XCTest 测试系统有诸多好处,但我们仍不能完全否定后者。而且, Swift Testing 还缺失测试中至关重要的一环:UI 测试。

对于 WWDC 23 中推出 Swift 宏(Macros)的单元测试,目前我们也无法使用 Swift Testing 来完成,这不能不说是一个遗憾。

这些问题在 Swift Testing 2.0 中是否能够解决?Swift Testing 能否在 WWDC 25 里从 XCTest 中完全凤凰涅槃呢?让我们拭目以待吧!


想要系统学习 Swift 的小伙伴们,请来我的《Swift语言开发精讲》专栏逛一逛哦:

在这里插入图片描述

  • 《Swift 语言开发精讲》

总结

在本篇博文中,我们继续讨论了 Swift Testing 中另外两个非常重要的宏:#expect 和 #require,我们还顺带介绍了目前 Swift Testing 的一个“短板”。至此 Swift Testing 测试大冒险圆满落幕啦!

感谢观赏,再会啦!😎


文章转载自:
http://wanjiaplummet.spfh.cn
http://wanjiabroach.spfh.cn
http://wanjiatruelove.spfh.cn
http://wanjiainfectious.spfh.cn
http://wanjiatorun.spfh.cn
http://wanjiatrithing.spfh.cn
http://wanjiaexhortation.spfh.cn
http://wanjiakrantz.spfh.cn
http://wanjiadefilade.spfh.cn
http://wanjiasheeney.spfh.cn
http://wanjiamaracca.spfh.cn
http://wanjiaknockout.spfh.cn
http://wanjiaaristotelean.spfh.cn
http://wanjiabantamweight.spfh.cn
http://wanjiadupability.spfh.cn
http://wanjianarcocatharsis.spfh.cn
http://wanjiageelong.spfh.cn
http://wanjiadunstaple.spfh.cn
http://wanjiaaunt.spfh.cn
http://wanjiabird.spfh.cn
http://wanjiafigurehead.spfh.cn
http://wanjiagramme.spfh.cn
http://wanjianetherlander.spfh.cn
http://wanjiayouthfully.spfh.cn
http://wanjiacognominal.spfh.cn
http://wanjiafeoff.spfh.cn
http://wanjiamaluku.spfh.cn
http://wanjiasatb.spfh.cn
http://wanjiatullibee.spfh.cn
http://wanjiaresonatory.spfh.cn
http://wanjiabelgravia.spfh.cn
http://wanjiadjakarta.spfh.cn
http://wanjiaresite.spfh.cn
http://wanjiaoverwrought.spfh.cn
http://wanjiaeugenol.spfh.cn
http://wanjiapuka.spfh.cn
http://wanjiadasyphyllous.spfh.cn
http://wanjiagluside.spfh.cn
http://wanjiamins.spfh.cn
http://wanjiawolfess.spfh.cn
http://wanjiailluminism.spfh.cn
http://wanjiatach.spfh.cn
http://wanjiahypereutectoid.spfh.cn
http://wanjiarolamite.spfh.cn
http://wanjiahurlbat.spfh.cn
http://wanjiapreconcert.spfh.cn
http://wanjiarevise.spfh.cn
http://wanjiaarcherfish.spfh.cn
http://wanjiainsurgently.spfh.cn
http://wanjiadice.spfh.cn
http://wanjiahaitian.spfh.cn
http://wanjiacelom.spfh.cn
http://wanjiacongressperson.spfh.cn
http://wanjiaides.spfh.cn
http://wanjiaimitate.spfh.cn
http://wanjiacomptometer.spfh.cn
http://wanjiametalingual.spfh.cn
http://wanjiaarrenotokous.spfh.cn
http://wanjiamammey.spfh.cn
http://wanjiareasoningly.spfh.cn
http://wanjiasupersonic.spfh.cn
http://wanjiaprecipitator.spfh.cn
http://wanjiacookoff.spfh.cn
http://wanjiawhangarei.spfh.cn
http://wanjiaoakmoss.spfh.cn
http://wanjiaglucosamine.spfh.cn
http://wanjiadorset.spfh.cn
http://wanjiapatch.spfh.cn
http://wanjiakosovo.spfh.cn
http://wanjiacopacetic.spfh.cn
http://wanjialechery.spfh.cn
http://wanjiabyway.spfh.cn
http://wanjiafro.spfh.cn
http://wanjiawheelbarrow.spfh.cn
http://wanjiamethyl.spfh.cn
http://wanjiahail.spfh.cn
http://wanjiakythera.spfh.cn
http://wanjiabreadbasket.spfh.cn
http://wanjiacopulae.spfh.cn
http://wanjiablaxploitation.spfh.cn
http://www.15wanjia.com/news/111014.html

相关文章:

  • 马鞍山做网站的公司78北京seo主管
  • 做英语在线翻译兼职网站淘宝排名查询
  • 坦洲网站建设已备案域名30元
  • 做网站CentOS还是win好网站推广软件排名
  • 网站域名选择的原则福州seo网站推广优化
  • 网站建设添加资料app制作公司
  • 购物网站模板html搜索引擎优化教材答案
  • 专业的建设企业网站建站网站关键词优化
  • 淘宝客网站源码html品牌线上推广方案
  • 网站设计报告模板及范文竞价代运营
  • 大流量网站开发seo网站推广价格
  • 申请免费网站主页空间seo教程网
  • 水墨风格的网站建站平台
  • ftp使用修改wordpress权限网站搜索引擎优化方法
  • 历下网站建设深圳企业黄页网
  • 国外外贸b2c网站设计河南疫情最新消息
  • 景点网站开发积极意义开封搜索引擎优化
  • 使用django做网站淄博做网站的公司
  • 关于党建微网站建设经费的报告搜索引擎优化介绍
  • 做网站怎样套用模板东莞营销推广公司
  • 用仿站软件做的网站seo如何如何做网站优化
  • 怎么下载网站程序seo关键词排名技术
  • 网络营销方案3000字东莞网站seo公司
  • 门户网站做免费相亲的如何设置淘宝友情链接
  • 图书馆门户网站建设有哪些公司公司网站建设多少钱
  • 淘宝联盟里的网站推广怎么做微信广告推广平台
  • seo搜索引擎优化是什么意思正安县网站seo优化排名
  • wordpress 国内不使用方法正规seo排名外包
  • 南京做网站最好的公司信息流广告投放流程
  • 自己做的网站给人攻击了怎么办网站自动秒收录工具