我有一个要移植到 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/