XCode下的iOS单元测试
2023-09-11 14:20:34 时间
我们可以向 Tests 添加更多测试类,只要该类是继承自 GHTestCase,且其中的测试方法都是无参无返回值且方法名字是以 test 为前缀即可。
OCMock
下面我们来添加 OCMock。
1,我们只能以静态库的方式来添加 OCMock。在 GHUnitTest 目录下新建 Libraries 目录,该目录是与 Tests 目录平级的。下载静态库文件,解压头文件至该目录下。
文件下载:头文件 libOCMock.a ,framework 文件:OCMock framework ,打开下载好的 ocmock-1.77.dmg,拷贝其中的‘Release/Library/Headers/OCMock’ 目录至 Libraries 下。最终目录结构如下:
2,在 GHUnitTest 工程中新建名为 Libraries 的 group,导入libOCMock.a 和目录 OCMock,注意 target 是 Tests。
3,设置 Tests 的 Build Setting。让 Libray Search Paths 包含 $(SRCROOT)/Libraries:
在 Header Search Paths 中增加 $(SRCROOT)/Libraries,并选中 Recursive 选择框。
4,编写 OCMock 测试。向 Tests 工程中添加名为 OCMockSampleTest 的 Objective C class。其内容如下:
// simple test to ensure building, linking, // and running test case works in the project - (void)testOCMockPass id mock = [OCMockObject mockForClass:NSString.class]; [[[mock stub] andReturn:@"mocktest"] lowercaseString]; NSString *returnValue = [mock lowercaseString]; GHAssertEqualObjects(@"mocktest", returnValue, @"Should have returned the expected string."); - (void)testOCMockFail id mock = [OCMockObject mockForClass:NSString.class]; [[[mock stub] andReturn:@"mocktest"] lowercaseString]; NSString *returnValue = [mock lowercaseString]; GHAssertEqualObjects(@"thisIsTheWrongValueToCheck", returnValue, @"Should have returned the expected string.");
XCode 内置了 OCUnit 单元测试框架,但目前最好用的测试框架应该是 GHUnit。通过 GHUnit + OCMock 组合,我们可以在 iOS 下进行较强大的单元测试功能。本文将演示如何在 XCode 4.2 下使用 OCUnit, GHUnit 和 OCMock 进行单元测试。 OCUnit 在 XCode 下新建一个 OCUnitProject 工程,选中 Include Unit Tests 选择框,
OCUnit 框架则会为我们自动添加 Unit Test 框架代码:
XCode 在 OCUnitProjectTests.m 中为我们自动生成了一个 Fail 的测试:
// simple test to ensure building, linking, // and running test case works in the project - (void)testOCMockPass id mock = [OCMockObject mockForClass:NSString.class]; [[[mock stub] andReturn:@"mocktest"] lowercaseString]; NSString *returnValue = [mock lowercaseString]; GHAssertEqualObjects(@"mocktest", returnValue, @"Should have returned the expected string."); - (void)testOCMockFail id mock = [OCMockObject mockForClass:NSString.class]; [[[mock stub] andReturn:@"mocktest"] lowercaseString]; NSString *returnValue = [mock lowercaseString]; GHAssertEqualObjects(@"thisIsTheWrongValueToCheck", returnValue, @"Should have returned the expected string.");
编译运行,点击 Run,效果如下图。
至此,iOS 下的OCUnit,GHUnit,OCMock 单元测试介绍就到此结束了。当然还有其他一些测试框架,比如 google 出品的 GTM。
最新内容请见作者的GitHub页:http://qaseven.github.io/
iOS单元测试的那些事儿 作为客户端开发,很多时候我们过多的关注于功能的测试,而忽略标准的单元测试。其实,单元测试是保障项目稳定性的最有效且成本最低的测试方式。越偏向底层服务的代码,越需要使用单元测试来对可靠性进行保障。一旦单元测试覆盖完成,则之后再进行代码优化和迭代的时候则会有引入新问题的几率会大为减小。
![](http://www.51testing.com/attachments/2014/01/14982672_2014010714573994e75.jpg)
![](http://www.51testing.com/attachments/2014/01/14982672_20140107145739109U1D.jpg)
![](http://www.51testing.com/attachments/2014/01/14982672_2014010714573911KGTF.jpg)
![](http://www.51testing.com/attachments/2014/01/14982672_2014010714573912iLX9.jpg)
// simple test to ensure building, linking, // and running test case works in the project - (void)testOCMockPass id mock = [OCMockObject mockForClass:NSString.class]; [[[mock stub] andReturn:@"mocktest"] lowercaseString]; NSString *returnValue = [mock lowercaseString]; GHAssertEqualObjects(@"mocktest", returnValue, @"Should have returned the expected string."); - (void)testOCMockFail id mock = [OCMockObject mockForClass:NSString.class]; [[[mock stub] andReturn:@"mocktest"] lowercaseString]; NSString *returnValue = [mock lowercaseString]; GHAssertEqualObjects(@"thisIsTheWrongValueToCheck", returnValue, @"Should have returned the expected string.");
XCode 内置了 OCUnit 单元测试框架,但目前最好用的测试框架应该是 GHUnit。通过 GHUnit + OCMock 组合,我们可以在 iOS 下进行较强大的单元测试功能。本文将演示如何在 XCode 4.2 下使用 OCUnit, GHUnit 和 OCMock 进行单元测试。 OCUnit 在 XCode 下新建一个 OCUnitProject 工程,选中 Include Unit Tests 选择框,
![](http://www.51testing.com/attachments/2014/01/14982672_201401071457391gCNE.jpg)
![](http://www.51testing.com/attachments/2014/01/14982672_2014010714573929gth.jpg)
// simple test to ensure building, linking, // and running test case works in the project - (void)testOCMockPass id mock = [OCMockObject mockForClass:NSString.class]; [[[mock stub] andReturn:@"mocktest"] lowercaseString]; NSString *returnValue = [mock lowercaseString]; GHAssertEqualObjects(@"mocktest", returnValue, @"Should have returned the expected string."); - (void)testOCMockFail id mock = [OCMockObject mockForClass:NSString.class]; [[[mock stub] andReturn:@"mocktest"] lowercaseString]; NSString *returnValue = [mock lowercaseString]; GHAssertEqualObjects(@"thisIsTheWrongValueToCheck", returnValue, @"Should have returned the expected string.");
编译运行,点击 Run,效果如下图。
![](http://www.51testing.com/attachments/2014/01/14982672_201401071509271hgiH.jpg)
iOS单元测试的那些事儿 作为客户端开发,很多时候我们过多的关注于功能的测试,而忽略标准的单元测试。其实,单元测试是保障项目稳定性的最有效且成本最低的测试方式。越偏向底层服务的代码,越需要使用单元测试来对可靠性进行保障。一旦单元测试覆盖完成,则之后再进行代码优化和迭代的时候则会有引入新问题的几率会大为减小。
相关文章
- IOS之同步请求、异步请求、GET请求、POST请求
- IOS获取文件属性
- ios xcode Could not load the "MyImage.png" image referenced from a nib in the bundle with identifier "com.mytest.MyProject"
- iOS Sprite Kit教程之xcode安装以及苹果帐号绑定
- iOS Simulator功能介绍关于Xamarin IOS开发
- 如何通过云存储实现iOS端App的扫码安装
- 使用Xcode 7 beta免费真机调试iOS应用程序
- 《iOS 8应用开发入门经典(第6版)》——第2章,第2.1节使用Xcode
- 《iOS 8开发指南(第2版)》——第1章,第1.4节使用Xcode开发环境
- 《iOS 8案例开发大全》——实例002 改变Xcode工程的公司名称
- 《iOS 8开发指南》——第6章,第6.3节在Xcode中实现MVC
- iOS 可变字符串NSMutableString的使用
- iOS——多线程编程详细解析
- iOS-Xcode上传后iTunes Connect构建版本不显示
- SwiftUI 完整项目大全之完整笔记coredata增删改查轻松收集、组织和共享文本的iOS和macOS应用程序
- SwiftUI iOS 提示组件之 仿Xcode图标图片提示框Alert Toast弹窗(教程含源码)
- iOS SwiftUI macOS之List基础使用
- iOS截取特定的字符串(正则匹配)
- iOS--App功耗优化
- IOS 播放动态Gif图片
- IOS_ios逆向工程-静态分析
- iOS 静态库制作(Xcode9.0 版本)(注:亲测.a静态文件放在Unity Plugins/IOS 也可用)
- iOS Sprite Kit教程之xcode安装以及苹果帐号绑定
- weex-platform里iOS项目打包报错/platforms/ios/../../start does not exist.
- iOS之学习资源收集--很好的IOS技术学习网站
- Accept Xcode/iOS License to run git