【问题标题】:Unit Testing iOS within XcodeXcode 中的 iOS 单元测试
【发布时间】:2012-04-09 02:58:45
【问题描述】:

我有一个要移植到 iOS 的现有应用程序。我目前对每个构建运行单元测试。为了简化测试,我的测试被集成到我的应用程序中,所以当我通过-t 时,我的测试就会运行。我在main 中做的第一件事是:

for(int ii=1;ii<argc;++ii)
{
    if(strcmp("-t", argv[ii]) == 0)
        return RunAllTests(argc, argv);
}

这在桌面上效果很好,我也希望它也可以与 iOS 一起使用。当我通过 -t 标志在模拟器中手动运行应用程序时,测试按预期运行。不幸的是,它在作为构建后步骤运行时不起作用。我在每次构建时都运行这个脚本:$TARGET_BUILD_DIR/$TARGET_NAME.app/$TARGET_NAME -t。运行时出现以下错误:

dyld: Library not loaded: /System/Library/Frameworks/UIKit.framework/UIKit
  Referenced from: /development/test/projects/../bin/test.app/test
  Reason: image not found
/development/test/projects/../obj/test.build/Script-27DEB636151ECEC80003FE53.sh: line 2:  8720 Trace/BPT trap: 5       $TARGET_BUILD_DIR/$TARGET_NAME.app/$TARGET_NAME -t
Command /bin/sh failed with exit code 133

我假设那是因为 IDE 试图直接运行可执行文件,而不是在模拟器中。

我知道 iOS 有一个单元测试框架,但我已经有了一个工作流程,我不想为了在 iOS 上进行单元测试而不得不重写我的所有测试。有没有办法强制 Xcode 在模拟器中运行我的构建后步骤,以便我的测试正确运行?

【问题讨论】:

    标签: ios xcode testing tdd


    【解决方案1】:

    在 Xcode 中,在菜单上选择 Product->Edit Scheme...。我假设您正在使用 Run 或 Test,但这没关系。无论您使用什么运行,点击右侧的 Arguments 标签。你会看到“Arguments Passed On Launch”。在那里添加你的参数。应该可以的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      • 2011-05-22
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多