我知道,最佳实践是在进行任何更改后运行所有单元测试用例,以确保不破坏任何内容。但是,有时调试中,我真的只想运行一个测试用例。似乎Xcode在UI中没有提供任何此类功能,而其他测试框架(例如JUnit)具有此类功能。
是否有任何解决方法只能在Xcode中运行一个测试用例?
P.S。我的大多数测试用例都是逻辑测试。因此,它们不能在iPhone设备上运行。
Xcode 4现在具有此功能。只需创建一个具有您要运行的测试用例的“运行方案”。
⌃ + ⌥ + ⌘ + U
您也可以使用Control-Option-Command-U的键盘快捷键
产品>执行操作>测试。动态菜单项可感测当前的测试方法,当您编辑测试方法时,编辑插入点将位于该位置,并允许您使用键盘快捷键运行该测试。该命令的名称适合显示它将运行的测试,例如,产品>执行操作>测试testAddition。键盘快捷键是Control-Option-Command-U。
[我确定没有人会错过Xcode 5的发布及其轻松运行单个测试用例的能力,而只是为了完整性而添加此答案。
在Xcode 5中,您可以通过单击测试导航器中测试旁边或编辑器中测试方法旁边的小播放按钮来运行单个测试用例。当您将鼠标悬停在两个地方时,它都会显示出来。
您还可以在命令行中将xctool
与xctool
参数一起使用,它将仅运行指定的测试用例。
您已经注意到,OCUnit测试框架将名称以'test'开头的方法标记为测试用例。这是在运行时完成的
实际上,您的测试用例应该运行得如此之快,以至于启用多少测试都没有关系;在您按“ Debug”(调试)后,您的调试器应该可以很快停止在测试用例中。
话虽如此,禁用某些测试的最快方法可能是使用#if 0 / #endif块。由于没有GUI组件,因此Xcode / OCUnit中不存在动态禁用测试用例的功能。
理论上应该是可行的,因为在运行时(以及运行所有测试之前),有多种方法可以访问OCUnit中的测试列表,但这需要修改OCUnit源代码,这是不希望的(将被删除)在下一个Xcode更新中删除)。
最后,如果该功能对您很重要,您可以轻松编写自己的测试工具,该工具主要复制OCUnit的功能。然后,您可以将其调整为您内心的内容,添加UI,等等。
这并不困难,而且有点教育。这是一个很好的链接,可以帮助您入门:
--only