OC 单元测试

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

2017-09-05  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读