可能重复:
Why doesn't gcov report any lines being covered by my unit tests?
问题
我在桌面上有一个Cocoa项目,我在Snow Leopard 10.6.2上使用Xcode 3.2.1。
我想在Xcode中为我的单元测试目标生成代码覆盖率文件。
我尝试过什么
正如this one这样的文章建议,我已将构建设置调整为:
“生成测试覆盖率文件”已选中 检查“仪器程序流程” “-lgcov”添加到“Other Linker Flags”
我还将测试目标的Run Script部分设置为具有以下内容:
# Run the unit tests in this test bundle.
"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests"
# Run gcov on the framework getting tested
if [ "${CONFIGURATION}" = 'Coverage' ]; then
FRAMEWORK_NAME=LapsusInterpretationEngine
FRAMEWORK_OBJ_DIR=${OBJROOT}/${FRAMEWORK_NAME}.build/${CONFIGURATION}/EngineTests.build/Objects-normal/${NATIVE_ARCH}
mkdir -p coverage
pushd coverage
find ${OBJROOT} -name *.gcda -exec gcov -o ${FRAMEWORK_OBJ_DIR} {} \;
popd
fi
由于我的框架名称是LapsusInterpretationEngine,但我的目标名为EngineTests,我将其直接放入FRAMEWORK_OBJ_DIR,但这似乎没有帮助。
我在建造之前尝试过清洁。我已经确保所有上述构建设置都适用于单元测试目标和应用程序目标。
我得到了什么
我正在使用的构建目录中的任何位置都没有.gcda或.gcno文件。
我将CoverStory指向我的builds文件夹中的Objects-normal目录,它抱怨没有任何内容可供阅读。
我必须做一些非常明显错误的事情。任何想法?
我已尝试将“EngineTests.build”目录设为$ {FRAMEWORK_NAME},这会产生相同的结果。