在Xcode中进行iOS单元测试

3

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

0
在Xcode中,菜单中选择Product->Edit Scheme...。我假设你正在使用Run或者Test,但这并不重要。无论你使用什么运行方式,在右侧点击Arguments选项卡。你会看到"Arguments Passed On Launch"。在那里添加你的参数。那应该就可以了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接