【问题标题】:KIF - Integration with CIKIF - 与 CI 集成
【发布时间】:2013-09-18 17:22:52
【问题描述】:

使用早期的 KIF,我可以在 appdelegate 的 didFinishLaunching 方法中添加 testcontroller 头文件,这样我的 CI 就可以工作了。

testcontroller.h

#import <Foundation/Foundation.h>
#import "KIFTestController.h"

@interface testcontroller : KIFTestController

@end

testcontroller.m

#import "KIFTestScenario.h"

@implementation testcontroller

- (void)initializeScenarios;
{
    [self addScenario:[KIFTestScenario scenarioToTest]];
}

@end

我的应用程序委托是,

#ifdef RUN_KIF_TESTS
//DebugLog(@"%d",testsAreRunning);
if (!testsAreRunning){
    //DebugLog(@"Run KIF Tests");
    [[testcontroller sharedInstance] startTestingWithCompletionBlock:^{
        // Exit after the tests complete so that CI knows we're done
        exit([[testcontroller sharedInstance] failureCount]);
    }];
    testsAreRunning=YES;
}

#endif

使用新的 KIf (KIF-next) 我不知道该怎么做,因为没有控制器文件。

有人知道如何在控制器中为新的 KIF 结构分组测试吗?

【问题讨论】:

  • 您是否查看了 github 项目 (github.com/kif-framework/KIF) 的 README?它解释了 KIF 测试目标的基本设置并提供了一个示例。如果您已经查看自述文件,您缺少哪些信息?
  • 我确实读过它 (github.com/kif-framework/KIF/blob/master/…)。它说使用 xcode 5(我还没有)很容易做到。它没有说明如何做到这一点。如果你有例子,可以和我分享一下吗?
  • 您不需要 Xcode 5。您必须按照该文档的“创建测试目标”部分中的说明将测试目标添加到您的项目中。之后,您必须定义 KIFTestCase 的子类,如“示例”部分所述。
  • 我想,我现在得到了你要找的东西。你想在像 Jenkins 这样的持续集成服务器上执行你的 kif 测试。我不得不承认,标题很清楚你的问题,我只是错过了你的意思。
  • 是的..我想在 Jenkins 上运行我的 KIF 测试,为此我需要知道我需要在我的测试用例和 appdelegate 中进行哪些更改(如果有的话)。

标签: ios kif


【解决方案1】:

您必须在持续集成服务器上执行应用程序测试目标。例如,Setting Up Jenkins CI for iOS Development 的“解决方案”部分解释了如何配置 pre Xcode 5 来执行测试。或者,查看Continuous Integration of iOS Projects using Jenkins, CocoaPods, and Kiwi 的“从命令行运行 Kiwi Specs”部分。虽然他们描述了执行 Kiwi 测试而不是 kif 测试的解决方案,但它们基本上解决了相同的问题,即使用 Jenkins 执行应用程序测试目标。

【讨论】: