看着XCTest和Xcode 5的单元测试,不知道如何在Xcode 5下使用Instruments运行我的单元测试...
具体来说,我想在测试期间查找泄漏(尽管在这种情况下不需要自动化,但显然这将很有用)。
有可能实现吗?
看着XCTest和Xcode 5的单元测试,不知道如何在Xcode 5下使用Instruments运行我的单元测试...
具体来说,我想在测试期间查找泄漏(尽管在这种情况下不需要自动化,但显然这将很有用)。
有可能实现吗?
我认为这是最简单的方法:
以下是在Xcode 6下正确的操作方式:
1)在您的Xcode项目中,展开“Products”文件夹,在“.xctest”产品上单击右键,并最后选择上下文菜单中的“在Finder中显示”。
2)启动Instruments并使用所选模板创建新文档。
3)为文档执行“选择目标...”
4)导航并选择Xcode用于运行测试的工具,位于/Applications/Xcode.app/Contents/Developer/usr/bin/xctest
(您可以在终端中使用xcrun -f xctest
找到此位置)- 您需要启用“遍历包”以浏览Xcode应用程序内部。
5)从Finder拖放“.xctest”产品到步骤1中显示的“参数”字段中 - 这将输入其绝对路径。
6)单击“选择”。
现在您已准备好从Instruments运行单元测试了!
我基于正在测试的Mac应用程序目标创建了一个新目标,然后将xctest类添加到要编译的文件中。
然后将 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks/XCTest.framework 添加到要链接的框架中。
接下来将其路径 $(DEVELOPER_DIR)/Platforms/MacOSX.platform/Developer/Library/Frameworks 添加到Runpath搜索路径中。
然后在main.m中添加以下内容:
XCTestSuite *suite = [XCTestSuite testSuiteWithName:@"My tests"];
[suite addTest:[VideohogCachingTest testCaseWithSelector:@selector(testCompleteSequentialText)]];
[suite run];
这个命令在类 VideohogCachingTest 上运行了测试 testCompleteSequentialText,并以普通应用程序的方式运行,因此允许我通过 command+R 或在此情况下进行分析 with command+I 来运行测试。然后我可以捕获僵尸进程并跟踪问题,这是以前不可能的。
如果您想运行所有测试,可以执行以下操作:
XCTestSuite *suite = [XCTestSuite defaultTestSuite];
[suite run];
Profile
提示到Instruments
,例如Activity Monitor
、Allocations
、Time Profiler
等。
有几个注意事项:
应用程序
单元测试包
UI测试包