在新中大已经三年时间,一直在弄I6p 或者i6的产品,以及框架维护。虽然以前也听说过单元测试,但是在我的概念里面压根对测试的概念!而且新中大以产品开发为主,你要跑逻辑必须将DLL 覆盖到产品上才可以弄。压根没有所谓的单元测试的概念。   所以当斯凯网络的老大让我弄iOS的单元测试时,我还是挺反感的,一直对自己有过以下疑问:

   为什么要测试 ? 若要测试自己弄个按钮跑一下代码不就好了?非要写什么单元测试呢?这不是事倍功半吗?多次一举吗?

   然而当我用过单元测试之后,我才明白来。原来单元测试就是让你连按钮都不用写,就可以完成你自己的独立的测试代码。 这听起来是不是很诱人?在我仔细思考后我才明白这个道理。 其实以前自己所测试的东西,都要在界面上拖一个按钮,然后点击,然后弄数据进行测试,等到测试结束后又把那些没用的代码注释掉。这样反复的来回你就会发现,原来你是那么的二!这些东西早就被伟大的工程师和设计师们帮你实现掉了。  你只要重新写一个独立的代码,可以跟主产品完全独立开就可以完成你的那些测试了,而且压根不需要删除任何代码。

   有人会问:“什么叫独立的代码?”。 其实答案很简单,一个算法,一个函数,一个类。。。都算,只要你写的代码可以被客户端调用,而且是独立的并且带有一定的复杂度的就可以。太简单就没必要写了。测试的时候只要模仿可能性被其他地方调用的数据就可以了。Xcode编译器会帮你把你想要的结果输出来。错误都会帮你提示出来哟。。。。。

    这里写个简单的说明如下:

- (void)testExample
{
       NSString *url=@"http://%@/fm/queryMode";
    
    SKYQueryModelRequest *request= [[SKYQueryModelRequest alloc] init];
    
    request.productCode=@"mopote_12000001";
 
    request.dateTime=@"20140815073320";
    request.provcie=33;
    request.city=571;
    request.operators=0;
    
    NSString *pwd=@"i3yy5cpe8sn0";
    
    request.privatekey=[SKYSignUtils signWithPdCode:request.productCode withPWD:pwd withMobile:request.telPhoneNumber clientTime:request.dateTime];
 
  SKYQueryModelResponse *response=  [SKYCodecFactory requestWithUrl:url WithObject:request withResultName:@"SKYQueryModelResponse"];
    
    NSLog(@"%d",response.bussinessId);
}

 

 你将上面的方法写在单元 测试类里面即可,方法名字必须以test开头。 然后点击前面的方法名字就可以完全模拟界面上的点击操作了。。。。。哇哈哈 虽然很简单,但是第一次使用的时候还是有点小激动。 当作 一个小小的技能吧!