我有一个现有的应用程序,正在将其移植到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在模拟器中运行我的后构建步骤,以便我的测试能够正确运行?