要回答你两点:
- 为什么使用单独的测试目标很重要?
分离担忧。单元测试目标不具有与常规应用程序目标相同的结构类型 - 它包含一个测试包,该测试包引用测试中的应用程序目标,以及测试类和所需的任何助手类。它不是测试代码添加到应用程序目标的副本 - 实际上它甚至不应该包含测试代码。这意味着您不必做任何特殊的努力来保持测试目标与主应用程序目标同步 - 测试包加载主应用程序处理您的所有内容。 (您对Richard Ross对您之前的q的回答发表了评论,建议您已经遇到了重复原因的困难)。
- 我该如何去做这件事? (在Xcode 7上检查)。
假设您希望将目标添加到没有任何测试的现有项目中,请选择主项目,然后单击项目中目标列表下方的“+”。您也可以使用文件 - >新建 - >目标菜单选项。 您会看到一个菜单,要求您为新目标选择一个模板。选择'Test'并在测试中选择'iOS Unit Testing Bundle'。 检查下一个屏幕中的字段 - 默认情况下它们应该是正确的 - 但如果项目/工作区中有很多目标,则可能需要再次检查“要测试的目标”字段值是否正确。点击'确定',你应该有一个功能正常的单元测试包,并且应该能够使用Apple-U或产品 - >测试来运行示例测试。如果您使用的是ObjC,您仍然需要#import
应用程序类。
如果您正在创建一个新项目,您只需在创建项目时勾选'包含单元测试'框 - 不需要其他步骤。
http://www.raywenderlich.com/22590/beginning-automated-testing-with-xcode-part-12(2012/iOS 6中,但这一过程仍大致相同。还与詹金斯交易, Git并从CLI运行测试)。
Unit testing in OSX - 最近的职位 - 不是iOS的,我知道,但更多的是最新的比大多数的iOS教程(OCT 2015),并给出了分步说明(包括构建方案设置的单元测试目标,这可能不会在你的情况下)。反正可能值得一看。
注:在写这个问题我用了一个单独的测试目标和一个单独的测试主机。但是,由于我在单独的测试目标上得到了非常好的答案,所以我将这个问题保留原样,并创建另一个关于单独测试主机的问题。 [关于主题的Meta讨论](http://meta.stackoverflow.com/questions/317294/i-was-given-a-good-answer-but-then-noticed-that-the-question-is-wrong - 什么sh#317294) – FreeNickname