Kiwiが上手に体験

2597 ワード

Kiwiは、私がモジュール化して構築したとき、pod lib create xxxPodsを実行したときに問題があったと聞きました.
Which testing frameworks will you use? [ Specta / Kiwi / None ]

Kiwi


KiwiはBDDを思想とする可読性の良いテストフレームワークであり,その下層はXCTestフレームワークによって実現され,XCodeとの結合度が高い.

BDD


BDDは、テスト文を自然言語のような記述に変換することで、開発者がより大衆言語に合った習慣を使ってテストを書くことができ、プロジェクトの引き継ぎ/交付、またはその後、自分で修正した場合でも、スムーズに書くことができることを提唱しています.開発者としての私たちの日常的な仕事がコードを書くことだとすれば、BDDは実は物語を話しています.1つの典型的なBDDのテスト用例は完全な3段式のコンテキストを包んで、テストの大部分は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"];
      });  
  });
});

4つの一般的なテストシーン


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シーン


この2つのシーンのテスト方法は、実行後に演算が実行されるかどうかを確認し、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、パラメータキャプチャと非同期テスト