iOS Kiwi参数化测试,如NUnit

时间:2014-07-02 08:34:02

标签: ios unit-testing tdd kiwi

有没有办法用Kiwi参数化测试?

如果您熟悉NUnit,它具有使用参数运行测试的功能 (见http://www.nunit.org/index.php?p=testCase&r=2.5)。

2 个答案:

答案 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)

有一种方式适合我。

基本上,

  1. 在测试文件中定义您自己的块,以获取您的参数

    typedef void(^TestCount)(INT count);
    
  2. 使用相应的测试创建块

    TestCount testCount = ^(INT count){
       [[someObject shouldNot] beNil];
       [[someObject should] have:count] rows];
    };
    
  3. 在任何需要的地方执行参数化块,我通常在它的块中执行

    context(@"when adding object", ^{
    
        beforeAll(^{
            [someObject addObject:anotherObject];
        });
    
    
        it(@"it should have 1 object", ^{
            testCount(1);
        });
    });
    
  4. 我希望这会有所帮助