没有合适的资源?快使用搜索试试~ 我知道了~
首页Swift 4.0 测试驱动 iOS 开发实战第三版
Swift 4.0 测试驱动 iOS 开发实战第三版
需积分: 10 4 下载量 21 浏览量
更新于2024-07-18
收藏 3.07MB PDF 举报
"《高清彩版 Test-Driven iOS Development with Swift 4.0》第三版是一本由Dr. Dominik Hauser编著的专业书籍,专为iOS开发人员设计。本书专注于测试驱动开发(TDD)在Swift 4.0环境下的应用,强调编写可维护、灵活且易于扩展的代码。TDD是一种软件开发方法,它鼓励开发者在编写实际代码之前先编写测试用例,以此来验证功能的正确性和可靠性。 该书的内容覆盖了从基础概念到高级实践,包括如何使用XCTest框架编写单元测试、集成测试以及端到端测试,如何利用Swift 4.0的新特性和语言特性优化测试代码,以及如何通过TDD确保代码质量。作者通过实例和实战项目,展示了如何将TDD原则融入iOS开发流程中,帮助读者建立起良好的编码习惯和代码规范。 版权方面,该书受2017年Packt Publishing出版,所有内容未经许可不得复制、存储或传播,除非用于批评性引用。尽管作者和出版社已尽力确保信息的准确性,但书中提供的信息不带有任何明示或默示的保修,不会对因使用本书导致的直接或间接损失承担责任。 此外,书中提到的公司和产品商标信息,尽管大部分采用了正确的标注方式,但Packt Publishing并不保证其准确性,因为商标信息可能会随着时间的推移发生变化。《Test-Driven iOS Development with Swift 4.0》是iOS开发者提升编程技能,尤其是通过TDD实践的实用参考书,适合希望通过严格的测试策略提高代码质量和可维护性的开发者阅读。"
资源详情
资源推荐
Preface
[ 5 ]
Piracy
Piracy of copyrighted material on the Internet is an ongoing problem across all media. At
Packt, we take the protection of our copyright and licenses very seriously. If you come
across any illegal copies of our works in any form on the internet, please provide us with
the location address or website name immediately so that we can pursue a remedy.
Please contact us at copyright@packtpub.com with a link to the suspected pirated
material.
We appreciate your help in protecting our authors and our ability to bring you valuable
content.
Questions
If you have a problem with any aspect of this book, you can contact us at
questions@packtpub.com, and we will do our best to address the problem.
1
Your First Unit Tests
When the iPhone platform was first introduced, applications were small and focused only
on one feature. It was easy to make money with an app that only did just one thing (for
example, a flashlight app that only showed a white screen). The code for these apps only
had a few hundred lines and could easily be tested by tapping the screen for a few minutes.
Since then, the App Store has changed a lot. Even now, there are small apps with a clear
focus in the App Store, but it's much harder to make money from them. A common app is
complicated and feature-rich, but still needs to be easy to use. There are companies with
several developers per platform working on one app all the time. These apps sometimes
have a feature set that is normally found in desktop applications. It is very difficult and
time consuming to test all the features on such apps by hand.
One reason for this is that manual testing needs to be done through a user interface, and it
takes time to load the app to be tested. In addition to this, human beings are very slow
compared to the capabilities of computers. Most of the time, a computer waits for the user's
next input. If we could let a computer insert values, testing could be drastically accelerated.
Additionally, the computer could test the features of the app without loading the user
interface; thus, the complete app could be tested within seconds. This is exactly what unit
tests are all about.
Writing unit tests is hard at first because it is a new concept. This chapter is aimed at
helping you to get started with unit tests and how they are used in Xcode. We will also
discuss Test-Driven Development (TDD), in which the tests are written before the
implementation code. We will see how TDD is done in Xcode, and we will discuss its
advantages and disadvantages.
Your First Unit Tests
[ 7 ]
We will cover the following topics in this chapter:
Building your first automatic unit test
Understanding TDD
TDD in Xcode
The advantages of TDD
The disadvantages of TDD
Building your first automatic unit test
If you have done some iOS development (or application development in general) already,
the following example might seem familiar to you.
You are planning to build an app. You start collecting features, drawing some sketches, or
your project manager hands the requirements to you. At some point, you start coding. After
you have set up the project, you start implementing the required features of the app.
Let's say an app is an input form, and the values the user puts in have to be validated before
the data can be sent to the server. The validation checks, for example, whether the email
address looks like it's supposed to and the phone number has a valid format. You
implement the form and check whether everything works. But before you can test, you
need to write code that presents the form on the screen. Then, you build and run your app
in the iOS simulator. The form is somewhere deep in the view hierarchy. So, you navigate
to this view and put the values into the form. It doesn't work. Next, you go back to the code
and try to fix the problem. Sometimes, this also means that you need to run the debugger,
and build and run to check whether the code still has errors.
Eventually, the validation works for the test data you put in. Normally, you would need to
test for all possible values to make sure that the validation not only works for your name
and your data, but also for all valid data. But there is this long list of requirements on your
desk, and you are already running late. The navigation to the form takes three taps in the
simulator, and putting in all the different values just takes too long. You are a coder after
all.
If only a robot could perform this testing for you.
Your First Unit Tests
[ 8 ]
What are unit tests?
Automatic unit tests act like this robot for you. They execute code, but without the need of
navigating to the screen with the feature to test. Instead of running the app over and over
again, you write tests with different input data and let the computer test your code in the
blink of an eye. Let's see how this works in a simple example.
Implementing a unit test example
Open Xcode and go to File | New | Project. Navigate to iOS | Application | Single View
App, and click on Next. Put in the name FirstDemo, select the language Swift, and check
Include Unit Tests. Uncheck Use Core Data and Include UI Tests, and click on Next. The
following screenshot shows the options in Xcode:
Your First Unit Tests
[ 9 ]
Xcode sets up a project ready for development in addition to a test target for your unit tests.
Open the FirstDemoTests folder in the Project Navigator. Within the folder, there are two
files: FirstDemoTests.swift and Info.plist. Select FirstDemoTests.swift to open
it in the editor.
What you see here is a test case. A test case is a class comprising several tests. In the
beginning, it's good practice to have a test case for each class in the main target.
Let's go through this file step by step:
import XCTest
@testable import FirstDemo
Every test case needs to import the XCTest framework. It defines the XCTestCase class and
the test assertions that you will see later in this chapter.
The second line imports the module FirstDemo. All the code you write for the app will be
in this module. By default, classes, structs, enums, and their methods are defined as
internal. This means that they can be accessed within the module. But the test code lives
outside of the module. To be able to write tests for your code, you need to import the
module with the @testable keyword. This keyword makes the internal elements of the
module accessible to the test case.
Next, we'll take a look at the class declaration:
class FirstDemoTests: XCTestCase {
Nothing special here. This defines the FirstDemoTests class as a subclass of XCTestCase.
The first two methods in the class are as follows:
override func setUp() {
super.setUp()
// Put setup code here. This method is called ...
}
override func tearDown() {
// Put teardown code here. This method is called ...
super.tearDown()
}
The setUp() method is called before the invocation of each test method in the class. Here,
you can insert the code that should run before each test. You will see an example of this
later in this chapter.
剩余214页未读,继续阅读
weixin_38669689
- 粉丝: 27
- 资源: 300
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C语言快速排序算法的实现与应用
- KityFormula 编辑器压缩包功能解析
- 离线搭建Kubernetes 1.17.0集群教程与资源包分享
- Java毕业设计教学平台完整教程与源码
- 综合数据集汇总:浏览记录与市场研究分析
- STM32智能家居控制系统:创新设计与无线通讯
- 深入浅出C++20标准:四大新特性解析
- Real-ESRGAN: 开源项目提升图像超分辨率技术
- 植物大战僵尸杂交版v2.0.88:新元素新挑战
- 掌握数据分析核心模型,预测未来不是梦
- Android平台蓝牙HC-06/08模块数据交互技巧
- Python源码分享:计算100至200之间的所有素数
- 免费视频修复利器:Digital Video Repair
- Chrome浏览器新版本Adblock Plus插件发布
- GifSplitter:Linux下GIF转BMP的核心工具
- Vue.js开发教程:全面学习资源指南
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功