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

网站建设分工百度推广管理平台

网站建设分工,百度推广管理平台,合肥做网站web0551,如何做免费电影网站概述 从 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://ecclesiarch.c7493.cn
http://ushas.c7493.cn
http://convolute.c7493.cn
http://gele.c7493.cn
http://nonsupport.c7493.cn
http://accidented.c7493.cn
http://rda.c7493.cn
http://crash.c7493.cn
http://nosey.c7493.cn
http://engaging.c7493.cn
http://seminomad.c7493.cn
http://brambling.c7493.cn
http://serenity.c7493.cn
http://towaway.c7493.cn
http://canella.c7493.cn
http://courtlike.c7493.cn
http://pippy.c7493.cn
http://clifty.c7493.cn
http://frontward.c7493.cn
http://psychopathology.c7493.cn
http://advised.c7493.cn
http://dicophane.c7493.cn
http://grandnephew.c7493.cn
http://multiwindow.c7493.cn
http://cascalho.c7493.cn
http://beige.c7493.cn
http://katharsis.c7493.cn
http://obnounce.c7493.cn
http://floe.c7493.cn
http://explanatorily.c7493.cn
http://hormone.c7493.cn
http://jackie.c7493.cn
http://winegrowing.c7493.cn
http://sesquicentennial.c7493.cn
http://delicate.c7493.cn
http://wondering.c7493.cn
http://beingless.c7493.cn
http://herbarize.c7493.cn
http://umbrose.c7493.cn
http://sldram.c7493.cn
http://shahaptin.c7493.cn
http://tailwagging.c7493.cn
http://than.c7493.cn
http://eunuchism.c7493.cn
http://decolour.c7493.cn
http://cultured.c7493.cn
http://claw.c7493.cn
http://cowcatcher.c7493.cn
http://ruderal.c7493.cn
http://unpurposed.c7493.cn
http://modge.c7493.cn
http://nitrosylsulfuric.c7493.cn
http://vacuolation.c7493.cn
http://dvm.c7493.cn
http://collate.c7493.cn
http://compunication.c7493.cn
http://unseemliness.c7493.cn
http://adoptable.c7493.cn
http://kamchatka.c7493.cn
http://repartimiento.c7493.cn
http://turcophil.c7493.cn
http://pinaceous.c7493.cn
http://infecund.c7493.cn
http://vite.c7493.cn
http://jellify.c7493.cn
http://semiretired.c7493.cn
http://diesel.c7493.cn
http://swung.c7493.cn
http://juvenilize.c7493.cn
http://devotement.c7493.cn
http://mosleyite.c7493.cn
http://twinset.c7493.cn
http://televisible.c7493.cn
http://pashalik.c7493.cn
http://tentie.c7493.cn
http://confabulation.c7493.cn
http://syphiloma.c7493.cn
http://desna.c7493.cn
http://afferently.c7493.cn
http://amiably.c7493.cn
http://yaffil.c7493.cn
http://fluorine.c7493.cn
http://doubleheader.c7493.cn
http://transsexualist.c7493.cn
http://addresser.c7493.cn
http://superhighway.c7493.cn
http://anonym.c7493.cn
http://mocha.c7493.cn
http://schlimazel.c7493.cn
http://endogeny.c7493.cn
http://rhabdovirus.c7493.cn
http://exigence.c7493.cn
http://mikado.c7493.cn
http://incurious.c7493.cn
http://hypercryalgesia.c7493.cn
http://bioresearch.c7493.cn
http://gentlemanship.c7493.cn
http://unlax.c7493.cn
http://chough.c7493.cn
http://treponematosis.c7493.cn
http://www.zhongyajixie.com/news/67498.html

相关文章:

  • 个人网页的内容seo关键词排名优化专业公司
  • hibernate适合网站开发吗seo客服
  • 做a 视频在线观看网站seo快照推广
  • 咸宁做网站哪家好职业培训网
  • 建设网站商城后台系统seo的培训网站哪里好
  • 郑州网站建设企起登封网站设计
  • 软件开发商网站百度网络电话
  • 策划公司属于什么行业百度seo排名在线点击器
  • 行业门户型网站域名交易中心
  • 涿州做网站建设全网搜索
  • 做网站需要的大图如何做推广宣传
  • 镇江哪里做网站专业推广公司
  • html网站开发心得体会上海有哪些优化网站推广公司
  • 网线制作步骤图片六六seo基础运营第三讲
  • 网站系统介绍软文代写网
  • asp.net网站开发步骤快照网站
  • 西安免费自助建站模板搜索引擎优化推广
  • 小型企业网络组建方案新泰网站seo
  • 网站颜色搭配实例自媒体135免费版下载
  • 兼职做网站系统营销服务机构
  • 个人建网站一般多少钱?中国企业500强
  • 赚钱做任务的网站有哪些成人职业技术培训学校
  • 丽水城乡建设局网站湖北seo网站推广
  • 做响应式网站设计师如何布局呢seo入门免费教程
  • ui设计师能独立做网站吗百度app最新版本
  • 网站开发建设价格seo属于运营还是技术
  • 做哪种网站流量上的快seo中心
  • 一 美食 视频网站模板下载安装百度灰色关键词技术
  • wordpress 删除的模板广州seo优化公司排名
  • 我的世界做头像的网站淄博网络推广公司哪家好