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

网站部署环境工商企业注册登记网官网

网站部署环境,工商企业注册登记网官网,设计培训,网站开发实训报告模板概述 我们之前曾在 《用接地气的例子趣谈 WWDC 24 全新的 Swift Testing 入门》系列博文以及《WWDC24#xff08;Xcode 16#xff09;中全新的 Swift Testing 使用进阶》博文中较为系统地介绍了今年 WWDC 24 中全新的 Swift Testing 测试系统。 不过 Swift Testing 的本领远… 概述 我们之前曾在 《用接地气的例子趣谈 WWDC 24 全新的 Swift Testing 入门》系列博文以及《WWDC24Xcode 16中全新的 Swift Testing 使用进阶》博文中较为系统地介绍了今年 WWDC 24 中全新的 Swift Testing 测试系统。 不过 Swift Testing 的本领远不止于此这里我们将会用它“最重量级”的特性之一 参数化Parameterized 让多输入样本测试易如反掌、收放自如。 在本篇博文中您将学到如下内容 概述1. 传统多输入样本测试的弊端2. Swift Testing 中全新的 Parameterized 机制3. 对于可能抛出错误的测试也是不在话下4. 细粒度管控 Parameterized 中每个参数的测试总结 利用 Swift Testing 中强大的 Parameterized 机制可以让秃头码农们的测试如虎添翼那还等什么呢 让我们马上开始测试吧Let’s Testing 1. 传统多输入样本测试的弊端 在以往的 XCTest 测试系统中要想检测多个输入值的执行结果我们往往需要编写多个测试方法来一一验证。 enum ValidationError: Error {case valueTooSmallcase valueTooBigcase unknown }struct Validator {static func validate(input: Int) throws(ValidationError) - Bool {if input 0 {throw .valueTooSmall} else if input 100 {throw .valueTooBig} else {true}} }比如上面我们实现了一个 Validator 验证器并用它的 validate() 静态方法来验证输入值必须在 0 - 100 之间。注意为了演示之目的我们在输入值超大或超小时抛出了错误。 在下面的代码中我们期望输入值 5 是有效的 Test(验证 5 是否为有效输入) func testCorrectValue() throws {#expect(try Validator.validate(input: 5), 期待 5 为有效输入) }照例我们还要验证一下无效值是否能够顺利的抛出错误 Test(验证 -10 是非法输入) func testTooSmall() throws {#expect(throws: ValidationError.valueTooSmall) {try Validator.validate(input: -10)} }如此这般我们需要继续验证其它输入值的检测结果比如 -10, 0, 15, 90, 100, 和 200 等等。照以往来说此时我们要为每一个输入值写一个测试方法或是将若干个测试放在一个测试方法中。这样做有一些讨厌的“坏味道” 违反 KISS 和 DRY原则不适合测试的细粒度管控 所以我们该如何是好呢 2. Swift Testing 中全新的 Parameterized 机制 所幸的是在 Xcode 16 崭新的 Swift Testing 中我们有了一种更现代化的方法来解决它这就是 Parameterized参数化机制 从上面文档中可以看到Swift Testing 的参数化机制其实就是 Test 宏构造器的一种重载形式。我们还可以看到使用 Parameterized 机制的必备条件为Swift 6 和 Xcode 16。 回到 Validator 验证器的测试中我们这回使用 Parameterized 机制来降服一下之前多个输入值的“桀骜不驯” Test(验证一些有效的输入值,arguments: [0, 11, 20, 55, 90, 99, 100] ) func testRejectsOutOfBoundsValues(input: Int) throws {#expect(try Validator.validate(input: input), 期待 \(input) 要有效哦 ;)) }现在我们可以用同一个方法测试任意数量的输入值了。而且可以看到其实参数化机制就是将多个输入值以参数数组的形式传入到测试方法里进行集中测试。 3. 对于可能抛出错误的测试也是不在话下 在上面的代码中我们仅仅测试了有效的输入值那么对于无效的输入值我们还需要另外写一个参数化测试方法来“一蹴而就”吗 答案是没问题但不需要 我们完全可以将有效和无效的测试输入样本统统放到一起考量即使它们可能抛出错误也“毫无压力” Test(验证有效和无效的输入值,arguments: [(input: -10, expectedError: ValidationError.valueTooSmall),(input: 0, expectedError: nil),(input: 15, expectedError: nil),(input: 55, expectedError: nil),(input: 95, expectedError: nil),(input: 100, expectedError: nil),(input: 200, expectedError: ValidationError.valueTooBig),(input: 29352354, expectedError: ValidationError.valueTooBig),] ) func testRejectsOutOfBoundsValues(input: Int, error: ValidationError?) throws {if let error {#expect(throws: error) {try Validator.validate(input: input)}} else {#expect(try Validator.validate(input: input), 期待 \(input) 要有效哦 ;))} }从上面代码可以看到我们将无效值和其对应期望抛出的错误打包到元组Tuple中这样在测试方法中我们即可通过附加的实参取得该错误值并决定如何完成该输入值的测试。 当然如果小伙伴们愿意的话我们仍然可以保持 testRejectsOutOfBoundsValues 测试方法只含有一个实参 Test(验证有效和无效的输入值,arguments: [(input: -10, expectedError: ValidationError.valueTooSmall),(input: 0, expectedError: nil),(input: 15, expectedError: nil),(input: 55, expectedError: nil),(input: 95, expectedError: nil),(input: 100, expectedError: nil),(input: 200, expectedError: ValidationError.valueTooBig),(input: 29352354, expectedError: ValidationError.valueTooBig),] ) func testRejectsOutOfBoundsValues(condition: (value: Int, error: ValidationError?)) throws {if let error condition.error{#expect(throws: error) {try Validator.validate(input: condition.value)}} else {#expect(try Validator.validate(input: condition.value), 期待 \(condition.value) 要有效哦 ;))} }4. 细粒度管控 Parameterized 中每个参数的测试 使用 Parameterized 机制来规划 Swift Testing 不但能让海量样本的测试逻辑芟繁就简而且更为“炸裂”的是我们现在可以 一目了然的观察是哪几个输入值导致测试失败了继续单独测试任意输入值 在下面的演示中我们可以“鸟瞰”参数化方法中所有输入值测试的成功与否我们可以一次性测试全部输入值也可以单独测试某几个输入值。我们甚至可以重复测试某一参数值并设定测试结束条件 看到这里小伙伴们对 Swift Testing 是否更加“刮目相看”了呢别再犹豫马上在自己的项目中放手簪星曳月的使用它们吧棒棒哒 想要系统学习 Swift 的小伙伴们欢迎到我的《Swift语言开发精讲》专栏来逛一逛哦 《Swift 语言开发精讲》 总结 在本篇博文中我们继续介绍了 Xcode 16 全新 Swift Testing 中的参数化Parameterized测试机制。有此神兵利器相信小伙伴们在今后的单元测试中必将出奇制胜、手到擒来 感谢观赏再会吧
http://www.hkea.cn/news/14319737/

相关文章:

  • 织梦网站开发语言国外网站建设发展现状
  • 聊城网站建设有限公司怎么免费建立公司网站
  • 网站建设流程平台html前端开发
  • 网站域名试用期东莞网站营销推广公司
  • 做吃的教程网站买了域名怎么做网站
  • 湛江网站建设方案书工程建设监理网站
  • 官方网站建设公关键词密度查询站长工具
  • 海报制作网站免费h5 app开发 网站建设
  • seo公司网站推广精美网站模板下载
  • 建设银行手机短信网站怎么开通重庆购物狂论坛
  • 如何做网站企划案2345网址导航下载到桌面
  • 原子艺术做的网站怎么样子h5和手机网站
  • 单页网站如何做做外贸是什么网站
  • 网站怎么做搜索栏保定网站建设方案托管
  • 天津网站建设电焊机新时代文明实践站网址
  • 烘焙食品网站建设需求分析做旅游攻略的网站代码
  • 连运港网络公司做网站网站建设产品需求文档
  • 企业建网站的意义自己网上开店怎么做
  • 无锡网站策划公司企业网站管理系统 开源
  • 怎么做p2p的网站wordpress改了固定链接
  • 网站搬家数据库配置郑州企业展厅设计公司
  • 山东省住房建设厅网站首页网站建设之网页制作语言基础
  • 济南网站设计报价网站做可信认证多少钱
  • 合肥做网站优化公司网页制作工具的选择与网站整体网络没有关系
  • 德州网站建设价格漳州市住房与城乡建设部网站
  • 做自己的网站怎么购买空间安全的定制型网站建设
  • 打开国外网站很慢怎么办做项目的编程网站
  • 动漫网站建设前期策划鞍山吧
  • 网站制作流程是什么百度用户服务中心投诉电话
  • wap浏览器安卓版企业网站优化的三层含义