前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kiwi上手体验

Kiwi上手体验

作者头像
nimomeng
发布2018-09-13 14:17:04
4380
发布2018-09-13 14:17:04
举报

听说Kiwi,是来自于我在进行模块化构建的时候,执行 pod lib create xxxPods 的时候会有一个问题:

代码语言:javascript
复制
Which testing frameworks will you use? [ Specta / Kiwi / None ]

Kiwi

Kiwi是一套以BDD为思想的可读性良好的测试框架,其底层由XCTest框架实现,与XCode结合度很高。

BDD

BDD提倡的是通过将测试语句转换为类似自然语言的描述,开发人员可以使用更符合大众语言的习惯来书写测试,这样不论在项目交接/交付,或者之后自己修改时,都可以顺利很多。如果说作为开发者的我们日常工作是写代码,那么BDD其实就是在讲故事。一个典型的BDD的测试用例包活完整的三段式上下文,测试大多可以翻译为Given..When..Then 的格式,读起来轻松惬意。

Demo

代码语言:javascript
复制
describe(@"My initial tests", ^{

  context(@"will pass", ^{

      it(@"can do maths", ^{
        [[@1 should] beLessThan:@23];
      });
    
      it(@"can read", ^{
          [[@"team" shouldNot] containString:@"I"];
      });  
  });
});

四种常用的测试场景

Sequence Logic

此种情况直接通过equal语法,或者should not + equal语法完成,简单明快

代码语言:javascript
复制
it(@"can do maths", ^{
          [[vc.name should] equal:@"nimo"];
      });

Notification

此种方式利用出发notification的方式,来测试是否真的执行到了Notification的方式来执行。

代码语言:javascript
复制
it(@"can hook notification", ^{
          [[@"Notify" should] bePosted];
          
          NSNotification *myNotification = [NSNotification notificationWithName:@"Notify"
                                                                         object:nil];
          [[NSNotificationCenter defaultCenter] postNotification:myNotification];
      });

Block场景和Thread场景

这两种场景的测试方法一致,都是待其执行后看运算是否执行,通过expectFutureValue来进行查看:

代码语言:javascript
复制
it(@"can hook thread", ^{
          [vc changeNameByThread];
          [[expectFutureValue(vc.name) shouldEventually] equal:@"kiki"];
      });
      
      it(@"can hook blocks",^{
          __weak NimoViewController *wVC = vc;
          [vc changeNameWithBlock:^(NSString *name) {
              wVC.name = name;
          }];
          [[expectFutureValue(vc.name) shouldEventually] equal:@"nimo for Block Function"];
      });

优点

首先,和CocoaPods结合紧密,官方创建Pods后直接支持生成Kiwi的测试项目; 其次,由于其BDD的特性,语法可读性很强; 最后,由于是基于XCTest来开发的,对XCode的支持很好,直接通过XCode进行测试回归或调试即可。

和Jenkins的结合

Todo 不过因为起支持XCode级别的调试和运行,所以即便无法Jenkins也不是很有所谓了。

更详细的Kiwi介绍: 本来想写一篇关于Kiwi的详细介绍,发现喵神已经有专著了,所以我就不重复造轮子了: TDD的iOS开发初步以及Kiwi使用入门 Kiwi 使用进阶 Mock, Stub, 参数捕获和异步测试

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.11.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Kiwi
  • BDD
  • Demo
  • 四种常用的测试场景
    • Sequence Logic
      • Notification
        • Block场景和Thread场景
        • 优点
        • 和Jenkins的结合
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档