由于只是一些简单实用的东西,学学还是挺不错的。其实单元测试用的好,开发起来也会快很多。单元测试对于我目前来说,是为了方便测试一些功能是否正常运行,还有调试接口是否能正常使用。有时候你可能是为了测试某一个网络接口,然后每次都重新启动并且经过很多操作之后才测试到了那个网络接口。如果使用了单元测试,可以直接测试那个方法,相对方便很多。 比如由于修改较多,我们想测试一下分享功能是否正常,这时候有用了。(而不是重新启动程序,进入到分享界面,点击分享,填写分享内容。)其实单元测试并没有降低我们打代码的效率,我们可以在单元测试通过了,直接用到相应的地方。
  当然也有一些高级的作用,比如自动发布、自动测试(特别在一些大的项目,以防止程序被误改或引起新的问题)。
  现在,让我们先理清一下单元测试到底有些什么东西?
  OCUnit(即用XCTest进行测试)其实是苹果自带的测试框架,我们主要讲的是这个。GHUnit是一个可视化的测试框架。(有了它,你可以点击APP来决定测试哪个方法,并且可以点击查看测试结果等。)OCMock是模拟某个方法或者属性的返回值,你可能会疑惑为什么要这样做?使用用模型生成的模型对象,再传进去不可以了?答案是可以的,但是有特殊的情况。比如你测试的是方法A,方法A里面调用到了方法B,而且方法B是有参数传入,但又不是方法A所提供。这时候,你可以使用OCMock来模拟方法B返回的值。(在不影响测试的情况下,可以这样去模拟。)除了这些,在没有网络的情况下,也可以通过OCMock模拟返回的数据。UITests是通过代码化来实现自动点击界面,输入文字等功能。靠人工操作的方式来覆盖所有测试用例是非常困难的,尤其是加入新功能以后,旧的功能也要重新测试一遍,这导致了测试需要花非常多的时间来进行回归测试,这里产生了大量重复的工作,而这些重复的工作有些是可以自动完成的,这时候UITests可以帮助解决这个问题了。
  简单的单元测试
  1.新建项目:

  2.简单的测试,注意截图路径的问题
  进入到这个类,setUp是每个测试方法调用前执行,tearDowLICEcapn是每个测试方法调用后执行。testExample是测试方法,和我们新建的没有差别。不过测试方法必须testXXX的格式,且不能有参数,不然不会识别为测试方法。测试方法的执行顺序是字典序排序。
  按快捷键Command + U进行单元测试,这个快捷键是全部测试。
  testExample方法中输入
  NSLog(@"自定义测试testExample");
  int  a= 3;
  XCTAssertTrue(a == 0,"a 不能等于 0");
  点击播放按钮,开始单个方法的测试:

  出现如下结果,由于我们断言a是不能等于0的,所以测试没有通过。当然有其它的,用到再看,demo里都有。

  进行网络请求的测试
  使用CocoaPods安装AFNetworking和STAlertView(CocoaPods安装和使用教程 )
  Pofile:
  platform :ios, '7.0'
  pod 'AFNetworking', '~> 2.5.0'
  pod 'STAlertView', '~> 1.0.0'