我正在开发一个数据库访问库,并尝试使用已经编写的单元测试来检查内存泄漏。
这些都是基于SenTestingKit的逻辑测试,在Xcode4.2中设置正常的方式。我可以使用Cmd-U很好地运行它们,但看不到从Instruments启动它们的方法,或者调用Instruments来检查它们的方法。
我怎么才能让它工作呢?我是否需要编写新的案例并将其构建到应用程序中?
(This question是关于泄漏检查的单元测试,但我认为是在SenTestingKit之前。)
发布于 2012-12-05 23:20:11
此答案从用于OS X的SenTest开始。如果您担心在工具下使用用于iOS的SenTest,请跳到下一节。
仪器中的OS X单元测试
我意识到这有点晚了,但我今天需要在逻辑测试上运行仪器,并让它在我的环境中工作,所以我做了以下工作:
仪器正在运行的
OBCJ_DISABLE_GC,并将其值设为YES作为环境变量(如果正在运行GC,则不要执行此操作)DYLD_FRAMEWORK_PATH并指向目录containing of your .octest package your Working DYLD_LIBRARY_PATH to be the directory to your .xcodeproj lives
-SenTest Self和.octest包的完整路径
一些环境变量和您的工作目录可能不是必需的,这取决于您是否需要加载其他框架,以及您的代码目录中是否有需要读取的测试文件。因此,如果这些步骤不适用于您,您可以省略它们。
完成后,您将能够保存文档并使用它来运行测试。
仪器中的iOS单元测试
在OP澄清了需求之后,我开始用一个基于iOS模拟器的项目来验证基本的指令。
对于iOS,您需要稍有不同的配置,因为您调试的是不同的可执行文件,并且需要不同的库。因此,DYLD_FRAMEWORK_PATH将包含.octest包目录的路径和模拟器框架的路径。后者类似于:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk/Developer/Library/Frameworks,这取决于您正在使用的模拟器的版本,下面我们将其称为SDKPATH
仪器正在运行的
/Applications/Xcode中并找到/Applications/Xcode/Developer/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk/Developer/usr/bin/中的otest二进制文件,然后选择它DYLD_LIBRARY_PATH并指向包含您的.octest包的目录DYLD_ROOT_PATH,该目录正好指向SDKPATH (上)H143Add D44 with H245H146Add D47和指向包含.octest包和SDKPATH的目录(上面),在path list中用冒号(:)分隔它们,然后在您的iPhone模拟器主目录中添加
CFFIXED_USER_HOME (~/Library/Application Support/iPhone Simulator虽然我在将其放在此处之前已经展开了它,但由于我不确定~ gets interpreted)CFFIXED_USER_HOME to be the Directory to your iPhone lives~/Library/Application Support/iPhone Simulator .xcodeproj 参数,请使用-SenTest Self和您的.octest包的完整路径<代码>G259
发布于 2013-07-22 22:05:21
这是另一种简单得多的方法,可以更好地控制你的个人资料:
在setUp的开头放置一个断点,然后运行您想要运行的测试。当Xcode命中断点时,打开Instruments并在targets下搜索octest。然后,您可以简单地附加到该进程。切换到Xcode并在断点之后继续运行,仪器应该分析您想要运行的所有测试。
希望这能有所帮助。
https://stackoverflow.com/questions/10962388
复制相似问题