iOS单元测试和UI测试全面解析(10)

发表于:2017-03-31来源:51CTO作者:朱先忠点击数: 标签:单元测试iOS
现在的问题是,差值是一个负数;所以,得分是100-(-5)。解决方法是使用差异的绝对值即可。为此,在方法check(_:)中取消正确代码前面的注释,并删除不正确

现在的问题是,差值是一个负数;所以,得分是100-(-5)。解决方法是使用差异的绝对值即可。为此,在方法check(_:)中取消正确代码前面的注释,并删除不正确的代码即可。

删除上面设置的两个断点并再一次运行测试,以确认上面代码行现在已顺利通过。

使用XCTestExpectation测试异步操作

到目前为止,你已经学会了如何测试模型和调试测试失败。接下来,让我们继续学习如何使用XCTestExpectation来测试网络相关的操作。

首先,请打开HalfTunes项目。你会注意到,它使用URLSession来查询iTunes API和下载歌曲样本。假设您想修改它,以便使用AlamoFire进行网络操作。为了查看是否出现任何中断情况,您应为网络操作编写测试,并在更改代码之前和之后运行它们。

URLSession方法是异步执行的︰它们会马上返回,但只有运行一段时间后才真正完成。为了测试异步方法,你应使用XCTestExpectation使你的测试等待异步操作完成。

值得注意的是,异步测试通常很慢,所以你应该把它们与你另外的一些运行速度更快的单元测试分开。

从菜单“+”下选择并运行命令“New Unit Test Target…”,然后把目标命名为HalfTunesSlowTests。然后,在import语句的下面导入HalfTunes程序:


  1. @testable import HalfTunes 

在此类中的所有测试都将使用默认会话把请求发送到苹果公司的服务器。所以,我们在方法setup()中声明并创建一个sessionUnderTest对象,然后在方法tearDown()中释放它:


    原文转自:http://mobile.51cto.com/iphone-535758.htm