首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

译文: iOS Unit Testing and UI Testing Tutorial

以下为正文: 本教程讲解如何往iOS apps添加「单元测试/unit tests」、「UI测试/UI tests」,以及如何检查「代码的覆盖率/code coverage」。...这篇教程,演示了如何利用Xcode的test navigator来测试app的「模型/model」和「异步方法/asynchronous methods」;如何利用stubs、mocks模拟和library...在import下面导入HalfTunes app: @testable import HalfTunes 这个类的测试会用默认session向苹果服务器发送请求,声明sessionUnderTest变量...把测试跑起来,如果是连着网络的,app在模拟器加载后,测试大概几秒就能完成。 Fail Faster 测试失败大家都不愿意看到,不过不可能百分百保证每次测试都能通过。...在import语句下面,导入HalfTunes app: @testable import HalfTunes 声明SUT对象,并在setup()创建、在tearDown()释放: var controllerUnderTest

1.3K30

iOS_单元测试一之UnitTests

desc, "0") } 2、设计经验和原则 正面测试、负面测试、特性测试、完善代码覆盖率 基于意图,而不是基于实现 简单、清晰、易懂(包括函数名和函数体) 避免引入条件判断、循环等逻辑 纯UI描述不需要写单元测试...数据逻辑需要写单元测试 复杂代码需要进行合理的拆分 通过单元测试优化代码架构 二、创建测试文件 一般来说,我们会为一个类or一个类型的功能创建一个测试类,继承自XCTestCase。...设置方式如下图: 设置完之后,再测试一遍该方法,就能看到满足期望的比例了: ---- 六、其他 1、为测试添加全局断点: 2、测试项目里的文件 Swift项目,当我们需要使用一个类时,Xcode...scope 需要做的: 步骤1:需要在Target -> Build Phases -> Compile Sources 中点击+,加入你需要测试的文件,如下图: 步骤2:在测试文件的头部导入目标项目...,例如: @testable import MOSurveySwift 3、私有属性和方法: Swift 无法测试私有属性和方法:(以下是官网Tips) Note: @testable provides

87920
您找到你想要的搜索结果了吗?
是的
没有找到

iOS 面试策略之经验之谈- App的测试和上架

第一种是普通的单元测试、UI 测试、性能测试,对于某个模块甚至会做大量的集成测试,这类测试基本上检验了软件上所有可能的逻辑漏洞。...3.为什么在单元测试引入代码模块要用 @testable 关键词? 关键词:#internal 测试时,我们经常需要导入开发的 module。...@testable import 就表示,module 的 internal 变量和方法也可以在测试中被使用。...这道题如果用来测试,涉及到两个知识点:第一个是如何测试异步访问,第二个是使用 mock。我们来分别解释。 首先,如何测试异步访问。用 expectation 。...此时程序在逻辑上正确,单元测试毫无问题;然而 UI 测试却可以检测出屏幕上某些 UI 控件因为被键盘遮挡而无法点击。 7.如何检查测试覆盖率?

1.2K40

使用 Swift Package 插件生成代码

因此,我们让该应用程序附带了一个备用的JSON文件,如果远程和缓存的数据解码失败,将使用该文件,来保证程序的正常运行。 无论如何,我们需要符合Fetchable的新类型从备用数据中正确解码。...我们考虑过自动化该过程,但由于我们的代码库的性质,我们遇到了一些问题,代码库高度模块化,混合了Xcode项目和Swift Package。...请注意,Xcode项目的构建工具插件尚未按照发布说明在Xcode 14 Beta 2提供,但将在Xcode 14的未来版本中提供。...图片取自 Xcode Beta 2 版的发布说明 在过去的几周里,我一直在研究如何使用软件包插件生成单元测试,在这篇文章,我将解释我在向哪个方向尝试以及它涉及了什么。...提供输入路径和模块名称。这是最棘手的部分,这些需要指向正在测试的目标的来源,而不是插件正在应用于的目标——单元测试。谢天谢地,插件的目标依赖项是可访问的,我们可以从该数组获取我们感兴趣的依赖项。

2.2K20

Swift 单元测试入门

什么是单元测试 单元测试是运行和验证一段代码(称为“单元”)以确保其按预期运行并符合其设计的自动化测试。 单元测试Xcode 中有它们的 target,并使用 XCTest 框架编写。...在 Swift 编写单元测试 有多种方法可以测试相同的结果,但是当测试失败时它并不总是给出相同的反馈。以下提示可帮助您编写测试,通过从详细的失败消息获益,帮助您更快地解决失败的测试。...这允许您在测试的方法抛出错误时使测试失败。...我鼓励您阅读我的文章 《如何使用 XCTest 在 Swift 测试可选值》以了解更多详细信息。 在 Xcode 运行单元测试 编写测试后,就该运行它们了。通过以下提示,这将变得更有效率。...其次,您可以开始编写修复程序并运行新的单元测试来验证修复程序是否有效。此技术比运行模拟器来验证您的修复是否有效要快。 结论 编写定性的单元测试是开发人员的基本技能。

2.7K40

iOS开发笔记(七)

正文 这次分享三个有意思的问题:二维码生成、Xcode8单元测试的问题、添加新字体。 二维码生成 iOS平台上的二维码生成有很多第三方库,也可以使用原生的方法,这里选用的是QREncoder。...=0,0x101010的颜色值会被忽略; 同样的,有部分透明的边会出现0x00ffffff,如果仅仅以RGB的值=0xffffff进行判断,会导致额外的黑边; Xcode8单元测试的相关问题 1、...还有其他可能,比如test.m的文件没有加入工程;(在Build Phases的Compile Soucres可以看到是否添加,也可以通过打Log看是否执行) 2、头文件查找失败 通常是在单元测试调用了某些第三方库的代码...添加新字体 1、把.ttf字体文件导入Xcode工程; 2、在plist添加对应的字体文件,如下: ?...plist 3、在代码通过[UIFont fontWithName:@“newFontName” size:18]加载新字体; newFontName 是字体的名字,通过在Finder双击字体文件

1.4K90

学习单元测试,告别祈祷式编程

可以考虑先给新代码加单元测试 不会写单元测试 这篇文章主要关注第四个问题,如何单元测试。...= 3 { t.Errorf("Add() = %v, want %v", got, 3) } } 如何编写好的单元测试 什么样的单元测试才是好的单元测试呢?...结合上面我们对单元测试目的的描述,一个好的单元测试应该满足以下几个条件: 单元测试越简单越好,一个单元测试只做一件事 对错误易于追踪,如果测试失败,错误提示应该容易帮我我们定位问题 测试函数的命名符合特定的规则...外部服务如何测试 当然现实世界的代码并不会这么简单,通常都会包含外部请求或者对于其它类的调用。在编写单元测试时,对于外部依赖我们通常使用Mock和Stub的方式来模拟外部依赖。...编写可测试代码 Writing Testable Code 中提到一个非常实用的观点:在开发时,多想想如何使得自己的代码更方便去测试。如果考虑到这些,那么通常你的代码设计也不会太差。

55230

单元测试:概念、作用与实践

单元测试的概念 单元测试是软件测试的一种类型,测试对象是最基础的代码单元(函数、类、模块),属于白盒测试。在经典的测试金字塔单元测试处于最底层。...最简单的单元测试单元测试的意义 确保代码实现符合预期 单元测试是唯一有可能触达所有代码流程分支的测试手段 提前发现错误,并以最小的成本修复 越早发现错误,修复时间越短。...单元测试执行失败了,原因是/list接口调用find_by_page函数是传参顺序颠倒了。 这个问题在线上是不容易发现的,尤其是在分页是从 0 开始并且页面是自动加载下一页的情况。...如何进行单元测试 单元测试的基本流程 准备测试数据和环境 执行被测试代码单元 检查代码单元行为是否符合预期 清理环境 Given->When->Then 测试代码的行为 单元测试需要验证的是代码的行为符合预期...测试哪些代码 核心业务逻辑 登录注册 充值转账 业务流程 数据库查询 对外接口 身份认证 参数校验 一个例子 示例 何时编写单元测试 建议在完成单个模块时编写模块单元测试模块的粒度可以因人而异,可以是一个函数

1.6K30

单元测试

在计算机编程单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块的最小单位来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。...– 维基百科 使用单元测试以后,我们就没必要为了测试某个小模块去编译我们的程序,然后去等待模拟器启动然后到你需要验证的模块去。...怎么知道我们的项目有没有加上单元测试,用Xcode打开你的项目,看文件导航栏有没有类似下图的两个文件夹(TestDemo是工程名) ?...通过测试会变成绿色的对勾,失败会变成红色的叉叉。到这里测试用例你就会写了。...###总结 这只是苹果官方集成在Xcode的简单框架,优点就是简单,缺点也是简单。当然它的用法也绝非如此,有很多还待开发。苹果官方也有一个Demo,地址点击这里

1.6K20

在多包项目中统一管理资源

Feature 通常会包含有关 UI 的逻辑处理代码( Reducer )、单元测试代码、与该 Feature 相关的视图代码以及预览代码。...最终开发者需要通过在 Xcode 项目中导入所需的 Feature 模块,并通过串联代码将完整的 app 组合出来。...这个结构不仅允许预测性地加载代码和资源,同时也支持类似于本地化这样的系统性特性。Bundle 在存储上以目录的形式存在,在代码则需要通过 Foundation 框架的 Bundle 类来体现。...幸运的是,Xcode 为我们提供了一段展示如何创建可应对多种编译状态下 Bundle 实例的示例代码。...-20221106183121557无需在 Xcode 工程单独导入 I18NResource 模块,也可以直接使用其中的资源。

1.4K20

Magicodes.IE 2.5.6.1发布

2.5.5.2 2021.08.24 添加对Abp模块的包装,具体见#318。...】增加导入失败仅返回错误行功能 【Excel导入修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn进行分割追加列 2020.05.31 【Nuget】版本更新到2.2.3...2020.01.18 【Nuget】版本更新到2.0.0-beta1 【导出】完全重构整个导出Excel模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试...【导出】支持Excel模板导出并填写相关单元测试如何使用见教程《Excel模板导出之导出教材订购表》 支持单元格单个绑定 支持列表 2019.12.17 【Nuget】版本更新到1.4.16 【导入】...为false 2019.9.19 【导入】支持截止列设置,如未设置则默认遇到空格截止 【导入导入支持通过特性设置Sheet名称 2019.9.18 【导入】重构导入模块导入】统一导入错误消息 Exception

1.7K10

Magicodes.IE 2.5.5.3发布

2.5.5.2 2021.08.24 添加对Abp模块的包装,具体见#318。...】增加导入失败仅返回错误行功能 【Excel导入修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn进行分割追加列 2020.05.31 【Nuget】版本更新到2.2.3...2020.01.18 【Nuget】版本更新到2.0.0-beta1 【导出】完全重构整个导出Excel模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试...【导出】支持Excel模板导出并填写相关单元测试如何使用见教程《Excel模板导出之导出教材订购表》 支持单元格单个绑定 支持列表 2019.12.17 【Nuget】版本更新到1.4.16 【导入】...为false 2019.9.19 【导入】支持截止列设置,如未设置则默认遇到空格截止 【导入导入支持通过特性设置Sheet名称 2019.9.18 【导入】重构导入模块导入】统一导入错误消息 Exception

1.6K10

测试策略的实现

一个全面的自动化测试套件甚至可以提供最完整和最及时的应用软件说明文档,这个文档不仅是说明系统应该如何运行的需求规范,还能证明这个软件系统的确是按照需求来运行的。...,无论是单元测试、组件测试还是验收测试,开发人员都应该把它定为高优先级并修复它。...集成测试 假如你的应用程序需要通过一系列不同的协议与各种外部系统进行交互,或者它由很多松散耦合的模块组成,而模块之间还有很复杂的交互操作的话,集成测试就非常重要了。...然而探索性测试、演示以及用户使用的过程,都可能会发现应用程序的缺陷,这也许是不可避免的。这些缺陷都会放在待修复缺陷列表(backlog)。...根据这种分类方式,就能在待修复缺陷列表根据优先级将缺陷与用户故事按相同方式来排序,并可将二者一起放置。 小结 在很多项目中,测试被认为是一个由一些专职人员负责的独立阶段。

23530

Magicodes.IE 2.6.2 发布

】增加导入失败仅返回错误行功能 【Excel导入修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn进行分割追加列 2020.05.31 【Nuget】版本更新到2.2.3...2020.01.18 【Nuget】版本更新到2.0.0-beta1 【导出】完全重构整个导出Excel模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试...【导出】支持Excel模板导出并填写相关单元测试如何使用见教程《Excel模板导出之导出教材订购表》 支持单元格单个绑定 支持列表 2019.12.17 【Nuget】版本更新到1.4.16 【导入】...】修复导入Excel时表头设置的问题,已对此编写单元测试,见【产品信息导入】 【完善】编写ExportAsByteArray对于DataTable的单元测试,ExportWordFileByTemplate_Test...为false 2019.9.19 【导入】支持截止列设置,如未设置则默认遇到空格截止 【导入导入支持通过特性设置Sheet名称 2019.9.18 【导入】重构导入模块导入】统一导入错误消息 Exception

1.7K40

Magicodes.IE 2.5.6.2发布

2.5.5.2 2021.08.24 添加对Abp模块的包装,具体见#318。...】增加导入失败仅返回错误行功能 【Excel导入修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn进行分割追加列 2020.05.31 【Nuget】版本更新到2.2.3...2020.01.18 【Nuget】版本更新到2.0.0-beta1 【导出】完全重构整个导出Excel模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试...【导出】支持Excel模板导出并填写相关单元测试如何使用见教程《Excel模板导出之导出教材订购表》 支持单元格单个绑定 支持列表 2019.12.17 【Nuget】版本更新到1.4.16 【导入】...为false 2019.9.19 【导入】支持截止列设置,如未设置则默认遇到空格截止 【导入导入支持通过特性设置Sheet名称 2019.9.18 【导入】重构导入模块导入】统一导入错误消息 Exception

1.2K20

Magicodes.IE 2.6.0重磅发布

】增加导入失败仅返回错误行功能 【Excel导入修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn进行分割追加列 2020.05.31 【Nuget】版本更新到2.2.3...2020.01.18 【Nuget】版本更新到2.0.0-beta1 【导出】完全重构整个导出Excel模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试...【导出】支持Excel模板导出并填写相关单元测试如何使用见教程《Excel模板导出之导出教材订购表》 支持单元格单个绑定 支持列表 2019.12.17 【Nuget】版本更新到1.4.16 【导入】...】修复导入Excel时表头设置的问题,已对此编写单元测试,见【产品信息导入】 【完善】编写ExportAsByteArray对于DataTable的单元测试,ExportWordFileByTemplate_Test...为false 2019.9.19 【导入】支持截止列设置,如未设置则默认遇到空格截止 【导入导入支持通过特性设置Sheet名称 2019.9.18 【导入】重构导入模块导入】统一导入错误消息 Exception

1.5K20

Magicodes.IE 2.6.3 发布

】增加导入失败仅返回错误行功能 【Excel导入修复导入的空行标注位置偏移 【Excel导出】增加SeparateByColumn进行分割追加列 2020.05.31 【Nuget】版本更新到2.2.3...2020.01.18 【Nuget】版本更新到2.0.0-beta1 【导出】完全重构整个导出Excel模块并且重写大部分接口 【导出】支持列头筛选器——IExporterHeaderFilter,具体使用见单元测试...【导出】支持Excel模板导出并填写相关单元测试如何使用见教程《Excel模板导出之导出教材订购表》 支持单元格单个绑定 支持列表 2019.12.17 【Nuget】版本更新到1.4.16 【导入】...】修复导入Excel时表头设置的问题,已对此编写单元测试,见【产品信息导入】 【完善】编写ExportAsByteArray对于DataTable的单元测试,ExportWordFileByTemplate_Test...为false 2019.9.19 【导入】支持截止列设置,如未设置则默认遇到空格截止 【导入导入支持通过特性设置Sheet名称 2019.9.18 【导入】重构导入模块导入】统一导入错误消息 Exception

1.9K20
领券