如何在XCode中运行单个testing用例?

我知道最好的做法是在任何改变之后运行所有的unit testing用例,以确保不会破坏任何东西。 不过有时候,比如debugging,我真的只想运行一个testing用例。 看起来XCode并没有在UI中提供这样的function,而其他的testing框架如JUnit也有这样的function。

是否有任何解决方法只有一个testing用例在XCode中运行?

PS大部分testing用例都是逻辑testing。 所以,他们不在iPhone设备上运行。

XCode 4现在有这个function。 简单地创build一个包含您想要运行的testing用例的“运行scheme”。

  1. 打开菜单Product|Edit Scheme...
  2. 点击Edit...
  3. 在左侧窗格中,展开“ Test部分。
  4. 在右侧窗格中,展开testing包并取消选中不需要运行的testing用例。

^ + + + U

您也可以使用Control-Option-Command-U的键盘快捷键

来自Apple文档的专家

产品>执行操作>testing。 此dynamic菜单项用于检测当前testing方法,在编辑testing方法时,编辑插入点位于该方法中,并允许您使用键盘快捷方式运行该testing。 该命令的名称适合显示将运行的testing,例如Product> Perform Action> Test testAddition。 键盘快捷键是Control-Option-Command-U。

我相信没有人错过了Xcode 5的发布以及它轻松运行单个testing用例的能力,但是为了完整性而添加了这个答案。

在Xcode 5中,您可以通过单击testing导航器中testing旁边的小播放button或编辑器中的testing方法旁边来运行单个testing用例。 在这两个地方,当你将鼠标hover在上面

你也可以使用命令行中的--only--only参数,它只运行指定的testing用例。

如您所知,OCUnittesting框架将名称以“test”开头的方法标记为testing用例。 这是在运行时完成的

在实践中,你的testing用例应该运行得太快,以至于启用了多less应该没关系; 按下“debugging”后,您的debugging器应该能够很快地停止在您的testing用例中。

这就是说,禁用某些testing的最快捷方式可能是使用#if 0 / #endif块。 dynamic禁用testing用例的function在Xcode / OCUnit中不存在,因为没有GUI组件。

理论上它应该是可行的,因为在运行时(并且在所有的testing运行之前)有办法访问OCUnit中的testing列表,但是这需要对OCUnit源代码进行修改,这是不可取的(它将被清除下一个Xcode更新,一个)。

最后,如果这个特性对你很重要,那么你可以很容易地编写你自己的testing工具,这个工具主要是复制OCUnit的function。 然后你可以调整它的内容,添加用户界面等

这不是困难的,有点教育。 这里有一个很好的链接,让你开始:

http://gusmueller.com/blog/archives/2009/10/how_to_write_your_own_automated_testing_framework.html