2016-02-19 61 views
3

我曾经asked a question related to XCTests。在其中一个答案中,我被告知,在运行单元测试时(至少在iOS开发中),使用单独的测试目标(除主应用程序之外)是一种常见做法。我试图找到一些关于它的来源,但我不能为什么我应该使用单独的测试目标来运行XCTests,我应该怎么做?

我明白,这可能是一个最佳实践,所以我很想了解它。有人可以向我解释为什么它很重要,我从中得到什么好处,我应该怎么做呢?一些文章链接解释这个问题将不胜感激。

P.S.我知道我需要特殊的测试环境(虚假的内存数据库,模拟网络层等),但直到现在我才能在没有单独的测试主机的情况下实现测试。但我相信可能有更好的办法。

+1

注:在写这个问题我用了一个单独的测试目标和一个单独的测试主机。但是,由于我在单独的测试目标上得到了非常好的答案,所以我将这个问题保留原样,并创建另一个关于单独测试主机的问题。 [关于主题的Meta讨论](http://meta.stackoverflow.com/questions/317294/i-was-given-a-good-answer-but-then-noticed-that-the-question-is-wrong - 什么sh#317294) – FreeNickname

回答

3

要回答你两点:

  1. 为什么使用单独的测试目标很重要?

分离担忧。单元测试目标不具有与常规应用程序目标相同的结构类型 - 它包含一个测试包,该测试包引用测试中的应用程序目标,以及测试类和所需的任何助手类。它不是测试代码添加到应用程序目标的副本 - 实际上它甚至不应该包含测试代码。这意味着您不必做任何特殊的努力来保持测试目标与主应用程序目标同步 - 测试包加载主应用程序处理您的所有内容。 (您对Richard Ross对您之前的q的回答发表了评论,建议您已经遇到了重复原因的困难)。

  1. 我该如何去做这件事? (在Xcode 7上检查)。

假设您希望将目标添加到没有任何测试的现有项目中,请选择主项目,然后单击项目中目标列表下方的“+”。您也可以使用文件 - >新建 - >目标菜单选项。 您会看到一个菜单,要求您为新目标选择一个模板。选择'Test'并在测试中选择'iOS Unit Testing Bundle'。 检查下一个屏幕中的字段 - 默认情况下它们应该是正确的 - 但如果项目/工作区中有很多目标,则可能需要再次检查“要测试的目标”字段值是否正确。点击'确定',你应该有一个功能正常的单元测试包,并且应该能够使用Apple-U或产品 - >测试来运行示例测试。如果您使用的是ObjC,您仍然需要#import应用程序类。

如果您正在创建一个新项目,您只需在创建项目时勾选'包含单元测试'框 - 不需要其他步骤。

  • Apple Docs(链接到相关的WWDC演讲)

  • 教程。大部分教程都有点过时了。但没有那么多改变,所以只需看看文档并找出它。下面两个可能是有用的,否则只是谷歌。从快速浏览,大多数人似乎认为,该项目的单元测试成立之初

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),并给出了分步说明(包括构建方案设置的单元测试目标,这可能不会在你的情况下)。反正可能值得一看。

+0

原来,我犯了一个错误,并混淆了一个单独的测试目标和单独的测试主机。我改变了这个问题,但是你对另一个目标的回答对社区来说是非常好的和有价值的。所以,[在Meta SO上的简短咨询]之后(http://meta.stackoverflow.com/questions/317294/i-was-given-a-good-answer-but-then-noticed-that-the-question- is-wrong-what-sh#317294)我将答案恢复为原始状态,然后我会问另一个关于单独测试主机的问题。如果你能在那里做出贡献,我会很高兴。但如果不是,那也很好:)非常感谢! – FreeNickname

+0

新的问题:[http://stackoverflow.com/questions/35515825/why-should-i-use-a-separate-test-host-for-running-xctests-and-how-should-i-do-个](http://stackoverflow.com/questions/35515825/why-should-i-use-a-separate-test-host-for-running-xctests-and-how-should-i-do-th) – FreeNickname

相关问题