一个典型的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
网友评论