【发布时间】: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 在模拟器中运行我的构建后步骤,以便我的测试正确运行?
【问题讨论】: