xctestcase在传递预测试时运行测试

时间:2015-09-22 10:55:20

标签: ios objective-c xcode macos xctest

我在XCTestCase类中有几个测试用例,例如test1,test2等 我希望仅在test1, test2通过时运行testPrecondition。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

您必须覆盖XCtest的testInvocations类方法。以下示例来自Github 代码是自我解释的。

+ (NSArray *)testInvocations
{
    BOOL onlineTests = [[[[NSProcessInfo processInfo] environment] objectForKey:@"ONLINE_TESTS"] boolValue];
    if (!onlineTests)
        return [super testInvocations];

    NSMutableArray *testInvocations = [NSMutableArray new];
    for (NSInvocation *invocation in [super testInvocations])
    {
        if (![NSStringFromSelector(invocation.selector) hasSuffix:offlineSuffix])
            [testInvocations addObject:invocation];
    }
    return [testInvocations copy];
}

如果你想决定在运行时运行哪个测试=>你的测试中有代码味道(依赖),这意味着你做错了测试。