我知道最佳做法是在任何更改后运行所有单元测试用例,以确保不会破坏任何内容。但是,有时候,例如调试,我真的只想运行一个单一的测试用例。似乎XCode没有在UI中提供这样的功能,而其他测试框架如JUnit具有这样的功能。
是否有任何解决方法只能在XCode中运行一个测试用例?
P.S。我的大部分测试用例都是逻辑测试。因此,它们不能在iPhone设备上运行。
答案 0 :(得分:48)
XCode 4现在具有此功能。只需创建一个“运行方案”,其中包含您要运行的测试用例。
Product|Edit Scheme...
Edit...
Test
部分。答案 1 :(得分:32)
^ + ⌥ + ⌘ + û
您还可以使用Control-Option-Command-U
的键盘快捷键产品>执行操作>测试此动态菜单项检测编辑测试方法时编辑插入点所在的当前测试方法,并允许您使用键盘快捷键运行该测试。命令的名称适合于显示它将运行的测试,例如,Product>执行操作>测试testAddition。键盘快捷键是Control-Option-Command-U。
答案 2 :(得分:12)
我确信没有人错过Xcode 5的发布及其轻松运行单个测试用例的能力,但为了完整性而添加此答案。
在Xcode 5中,您可以通过单击测试导航器中测试旁边或编辑器中测试方法旁边的小播放按钮来运行单个测试用例。当你将鼠标悬停在它上面时,它会显示在两个地方。
答案 3 :(得分:2)
您还可以使用命令行中的xctool
和--only
参数,该参数只运行指定的测试用例。
答案 4 :(得分:0)
如您所知,OCUnit测试框架将名称以'test'开头的方法标记为测试用例。这是在运行时完成的
在实践中,您的测试用例应该运行得如此之快,以至于启用了多少测试用例并不重要;按“Debug”后,调试器应该能够在测试用例内快速停止。
话虽这么说,禁用某些测试的最快方法可能是使用#if 0 / #endif块。 Xcode / OCUnit中不存在动态禁用测试用例的功能,因为没有GUI组件。
理论上它应该是可行的,因为在运行时(并且在运行所有测试之前)有方法可以访问OCUnit中的测试列表,但这需要修改OCUnit源代码,这是不可取的(它将是在下一个Xcode更新中消失,一个。)
最后,如果该功能对您很重要,您可以轻松编写自己的测试工具,主要复制OCUnit的功能。 然后你可以调整它的内容,添加用户界面等。
这并不难,而且有点教育。这是一个很好的链接,可以帮助您入门:
http://gusmueller.com/blog/archives/2009/10/how_to_write_your_own_automated_testing_framework.html
答案 5 :(得分:0)