美文网首页OC 单元测试
行为驱动开发(BDD)-- Kiwi

行为驱动开发(BDD)-- Kiwi

作者: 王坡同学 | 来源:发表于2017-09-05 10:38 被阅读15次

    一个典型的BDD的测试用例包活完整的三段式上下文,测试大多可以翻译为Given..When..Then的格式

    SPEC_BEGIN和SPEC_END都是宏,它们定义了一个KWSpec的子类,并将其中的内容包装在一个函数中

    describe描述需要测试的对象内容,也即我们三段式中的Given,
    context描述测试上下文,也就是这个测试在When来进行,
    最后it中的是测试的本体,描述了这个测试应该满足的条件,三者共同构成了Kiwi测试中的行为描述。
    它们是可以nest的,也就是一个Spec文件中可以包含多个describe;
    一个describe可以包含多个context,来描述类在不同情景下的行为;
    一个context可以包含多个it的测试例。

    #import <Kiwi/Kiwi.h>
    
    SPEC_BEGIN(SimpleStringSpec)
    
    describe(@"SimpleString", ^{
        context(@"when assigned to 'Hello world'", ^{
            beforeAll(^{
                //当前scope内部的所有的其他block运行之前调用一次
            });
            afterAll(^{
                //当前scope内部的所有的其他block运行之后调用一次
            });
            beforeEach(^{
                //在scope内的每个it之前调用一次,对于context的配置代码应该写在这里
            });
            
            afterEach(^{
                //在scope内的每个it之后调用一次,用于清理测试后的代码
            });
            
            specify(^{
                //直接书写不需要描述的测试
            });
            
            pending_(@"", ^{
                // 只打印一条log信息,不做测试。
                //这个语句会给出一条警告,可以作为一开始集中书写行为描述时还未实现的测试的提示。
            });
            
    
            NSString *greeting = @"Hello world";
            it(@"should exist", ^{
                [[greeting shouldNot] beNil];
            });
            
            it(@"should equal to 'Hello world'", ^{
                [[greeting should] equal:@"Hello world"];
            });
        });
    });
    SPEC_END
    
    

    相关文章

      网友评论

        本文标题: 行为驱动开发(BDD)-- Kiwi

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