【问题标题】:How to cause Xcode 5 unit tests to fail early?如何导致 Xcode 5 单元测试提前失败?
【发布时间】:2014-03-08 14:08:12
【问题描述】:

我在 Xcode 5 中运行 SenTestKit 单元测试(实际上,它们是与 KIF 2 的集成测试,但它相当于同一件事)。这些测试需要很长时间才能运行。有没有办法让整个测试套件在第一次测试失败时失败?

【问题讨论】:

    标签: unit-testing xcode5 kif


    【解决方案1】:

    您可以通过在每个测试用例开始时调用 [self raiseAfterFailure] 来中止对第一个 SetTestKit 测试失败的测试。但是,这不适用于 KIF 2。

    我最终像这样子类化了SenTestObserver:

    @interface TestObserver : SenTestObserver
    @end
    
    @implementation TestObserver
    
    + (void)load {
        [[NSUserDefaults standardUserDefaults] setValue:@"SenTestLog,TestObserver"
                                                 forKey:SenTestObserverClassKey];
    }
    
    + (void)testCaseDidFail:(NSNotification *)notification {
        // Fail fast
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            exit(1);
        });
    }
    
    @end
    

    编辑添加了dispatch_after,以便在终止测试套件之前有时间捕获测试输出。

    【讨论】:

      【解决方案2】:

      您可以简单地使用一个标志,但在这种情况下,当您使用 KIF 进行测试时,您应该仔细查看 UI 元素。 KIF 的一个很好的扩展是如果给定元素存在则返回 true 的方法。如果应该但它没有然后设置标志。 然后,您可以简单地通过检查标志来启动所有测试用例。 如果您需要有关该方法的帮助,请询问! :)

      【讨论】:

        猜你喜欢
        • 2018-03-31
        • 2021-05-08
        • 2016-01-02
        • 1970-01-01
        • 1970-01-01
        • 2021-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多