有没有办法用Kiwi参数化测试?
如果您熟悉NUnit,它具有使用参数运行测试的功能 (见http://www.nunit.org/index.php?p=testCase&r=2.5)。
答案 0 :(得分:0)
我最终创建了一个生成if(...,^ {})的宏;
如果测试失败,这将显示正确的错误消息,但您无法调试:(。
以下是一个示例:
let(_userModel, ^id{
return [[MyUserModel alloc] init];
});
#define email_should_be_valid(email) \
it(@ #email " should be valid", ^{\
[_userModel setEmail:email];\
[[theValue([_userModel validate:nil]) should] beTrue];\
});
email_should_be_valid(@"example@dd.m")
email_should_be_valid(@"example.example@dd.x")
email_should_be_valid(@"example@dd.com")
#undef email_should_be_valid
我不会将此答案标记为正确,希望有人为此提供更好的解决方案。
答案 1 :(得分:0)
有一种方式适合我。
基本上,
在测试文件中定义您自己的块,以获取您的参数
typedef void(^TestCount)(INT count);
使用相应的测试创建块
TestCount testCount = ^(INT count){ [[someObject shouldNot] beNil]; [[someObject should] have:count] rows]; };
在任何需要的地方执行参数化块,我通常在它的块中执行
context(@"when adding object", ^{
beforeAll(^{
[someObject addObject:anotherObject];
});
it(@"it should have 1 object", ^{
testCount(1);
});
});
我希望这会有所帮助