为什么要使用单独的测试目标来运行XCTests,我该怎么做?

FreeNickname

曾经问过一个与XCTests有关的问题在一个答案中,我被告知,在运行单元测试(至少在iOS开发中)时,使用单独的测试目标(主应用程序除外)是一种常见的做法。我试图找到一些有关的资料,但是我找不到

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

PS我知道我需要特殊的测试环境(虚拟内存数据库,模拟的网络层等),但是直到现在,我仍设法在没有单独的测试主机的情况下实现它。但是我相信可能会有更好的方法。

里奇·托利

要回答您的观点:

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

关注点分离。单元测试目标的结构与常规应用程序目标不同,它包含一个测试包,该捆绑包引用了被测试的应用程序目标以及测试类和所需的任何帮助程序类。它不是添加了测试代码的应用程序目标的重复-实际上,它甚至不应包含正在测试的代码。这意味着您无需付出任何特别的努力即可使测试目标与主应用程序目标保持同步-测试包加载了主应用程序这一事实将为您处理所有这一切。(您对Richard Ross对先前问题的回答发表了评论,表明您已经遇到了重复原因造成的困难)。

  1. 我应该怎么做呢?(已在Xcode 7上选中)。

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

如果您要创建一个新项目,则只需在创建项目时勾选“包括单元测试”框即可-无需其他步骤。

  • Apple Docs(带有相关WWDC演示文稿的链接)

  • 教程。周围的大多数教程都有些过时。但是变化不大,因此只需查看一下文档并找出答案即可。下面的两个可能很有用,否则只是google。乍一看,大多数人似乎都认为该项目在开始时就已经设置了单元测试。

http://www.raywenderlich.com/22590/beginning-automated-testing-with-xcode-part-12(2012 / iOS 6,但过程仍然大致相同。还处理Jenkins,Git和从中运行测试CLI)。

我知道OSX中的单元测试-最近发布-不是iOS,但是比大多数iOS教程(2015年10月)更新得多,并提供了逐步说明(包括在构建方案中设置单元测试目标),在您的情况下可能没有必要)。无论如何可能值得一看。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么要使用单独的测试主机来运行XCTests,我该怎么做?

我该怎么做才能确定为什么我的硬盘没有挂载?

测试appcelerator arrowdb生产环境,我该怎么做?

我该怎么做才能运行此BASIC程序?

运行 make 后我该怎么做才能使用 lcd-opencv-simulator?

使用引导程序我该怎么做?

Jest + Selenium:在describe块中运行所有测试之前和之后,我该怎么做?

HQL递归,我该怎么做?

我该怎么做(datarow)

Powershell-我该怎么做

使用Scalatest测试Akka时找不到测试用例,我该怎么做才能纠正它?

如果我只想使用TFS 2013在本地下载和测试文件,该怎么做?

无法将 html javascript 添加到单独的 .js 文件(我该怎么做)?

我有一个元素(在函数内部),我需要使用“document.getElementById”(位于外部)获取它。我该怎么做呢?

我该怎么做才能使我的程序正常运行?

我正在尝试运行 ruby / sinatra 的 rake 测试,它告诉我 rake 中止了!我不知道该怎么做

我该怎么做才能对新的USB硬盘进行压力测试?

Android:我应该怎么做,而不要使用不推荐使用的函数(getwidth())?

我是新手,我不确定代码中正在发生什么,但是我想通过使用id搜索来从数据库中过滤数据,我该怎么做

我该怎么做才能运行React Native CLi App?

表格行悬停时什么也不做-我该怎么做?

我该怎么做/添加什么才能使公共汽车在 25 点停止载客?

如果输入为空,我该怎么做,什么都不会发生

将 ASCII 字符转换为字母索引是什么意思,我该怎么做?

尝试比较数组中的每个单独项目,以检测用户输入密码中的数字以供密码检查器使用。我该怎么做?

更改我的主帐户的名称 - 我该怎么做?

我想随机显示 div - 我该怎么做?

我想定义闭包变量并在以后使用它们,我该怎么做?

我的DIV无法与JS动画一起正常使用,我该怎么做?