Kiwi上手体验

作者: nimomeng | 来源:发表于2016-11-06 22:52 被阅读647次

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

Which testing frameworks will you use? [ Specta / Kiwi / None ]

Kiwi

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

BDD

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

Demo

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语法完成,简单明快

it(@"can do maths", ^{
          [[vc.name should] equal:@"nimo"];
      });

Notification

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

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

Block场景和Thread场景

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

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, 参数捕获和异步测试

相关文章

  • Kiwi上手体验

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

  • Kiwi BDD测试框架

    How to stub method block in Kiwi? Kiwi,BDD行为测试框架--iOS攻城狮进...

  • Kiwi

    两周前的周日,正准备从图书馆出来去往码头,接到Victoria的电话。问我们可不可以暂时收养一只怀孕的狗狗?说她很...

  • iOS自动化测试框架Kiwi快速上手

    0x01 介绍 Kiwi是一个适用于iOS开发的行为驱动测试框架,旨在提供一个足够简单易用的BDD(Behavio...

  • Steemit—你的发帖很值钱

    区块链体验报告(三) Kiwi(WX:kiwind) 前两天,我成功的注册了一个Steemit账户,具体经过可以看...

  • Atom 上手体验

    缘由 作为一个 Android 开发者,一直使用 Android Studio 作为自己的开发工具,大部分时间都是...

  • 这手机20000啊!!!

    小米全新手机上手体验

  • 不以应用为目的的区块链都是耍流氓

    区块链体验报告(一) Kiwi(wx:kiwind) 区块链的开发如火如荼,被誉为“价值互联网”的区块链,在未来将...

  • Sia虐我千百遍,我待Sia如初恋

    区块链体验报告(二) Kiwi(kiwind) 我想,此篇报告的大标题能够很清晰的说明我对Sia的态度。也许这就是...

  • 不以应用为目的的区块链都是耍流氓

    区块链体验报告(一) Kiwi(wx:kiwind) 区块链的开发如火如荼,被誉为“价值互联网”的区块链,在未来将...

网友评论

    本文标题:Kiwi上手体验

    本文链接:https://www.haomeiwen.com/subject/counuttx.html