ios - 在 Xcode 中对 iOS 进行单元测试

标签 ios xcode testing tdd

我有一个要移植到 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 在模拟器中运行我的构建后步骤,以便我的测试正确运行?

最佳答案

在 Xcode 的菜单上,选择 Product->Edit Scheme...。我假设您正在使用 Run 或 Test,但这并不重要。无论您使用什么运行,请单击右侧的 Arguments 选项卡。您会看到“启动时传递的参数”。在那里添加您的参数。这应该有效。

关于ios - 在 Xcode 中对 iOS 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9858023/

相关文章:

javascript - codeceptJS/webdriverIO 使用抓取命令退出脚本

java - 如何中断 Hibernate session ?

ios - 当我希望一个对象与 if 语句一起出现时,当我满足其要求时,它不起作用。 swift 、ARKit

ios - 如何使用 Moya 取消多个网络请求

ios - cellForRowAt 是否应该只在 tableview.reloadData 之后的可见单元格中被调用?

Xcode更新速度极慢

ios - 如何检测自定义 tableview 单元格何时离开屏幕?

iOS - 通过我们的用户交互定期更新 UILabel 文本

ios - 单击打开 url 时如何修复 "Struct"以包含 UIButton?

asp.net-mvc - 涵盖 Asp.Net Web Apps 的功能测试软件/框架?