几经辗转,xcode 4总算把OCUnit融合的更好操作了。
http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/135-Unit_Testing_Applications/unit_testing_applications.html%23//apple_ref/doc/uid/TP40007959-CH20-SW3
按照Apple提供的文档,基本可以把Unit test配置好。
不过中间有几条关键点,我的经验总结如下:
1) Logic Test 不需要像Xcode3时代一样复制原有的Target.也不要设置Test Host和Bundle Loader. 但是要求所有测试的类文件都要Compile到测试Target中去。
2) Application Test 最好作为app target所在的scheme中的测试步骤
3) Logic Test 自己独立的Scheme (我还没有成功把Application Test和Logic test同时放在一个Scheme里面)
按照原来XCode3的方法,可以实现在编译后运行Unit Test的方法. 目前用Scheme的方法似乎还不能达到这一要求,虽然Build Setting里面有Test After Build但是还是不去执行Unit test如果哪位同学有更好的方式,也请告诉我。
写好了测试之后,就是要看Code Coverage了。
LLVM已经把Code Coverage的接口和原来的GCC统一了。所以大家所需要做的就是设置这几个参数
- "Compiler for C/C++/Objective-C" 写为 "Apple LLVM Compiler 3.0"
- "Generate Test Coverage Files" 设为 "Yes"
- "Instrument Program Flow" 设为 "Yes"
- 然后在被测试的Target的build phase选项中假如一下lib: /Developer/usr/lib/libprofile_rt.dylib
- 通过Scheme 的Test 进行测试,结果应该在一个很偏僻的角落里,找到Project的Build目录然后在appName.build目录下找到刚刚测试编译出的targetName.build里面有个Object-Normal包含所有的gcda文件。我推荐用Cover Story来查看整个目录,可以看到源代码已经呗标注为不同颜色,被测试过的是绿色,红色为没有测试过的代码部分。