我正在关注 VS 2013 http://msdn.microsoft.com/en-us/library/dd537628.aspx中的代码覆盖率。它显示测试的覆盖范围而不是实际代码。
我从测试资源管理器中选择了单元测试,然后点击Analyze Code Coverage -> Selected Test
。代码覆盖窗口在底部打开,它显示单元测试的dll,它的覆盖范围和代码覆盖率的实际dll没有显示。
另外,我查看了文章http://msdn.microsoft.com/library/jj159523.aspx。将pdbs和dll复制到同一位置。在代码覆盖窗口消息中
生成空结果:未检测到二进制文件。确保测试运行,加载了所需的二进制文件,具有匹配的符号文件,并且未通过自定义设置排除。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=253731"
对此有何看法?
答案 0 :(得分:1)
我已经尝试了链接中给出的步骤。
如果您使用VS 2013,则会略有变化。
a)环境变量VS120COMNTOOLS设置为\ common7 \ tools
b)Regkey HKLM \ SOFTWARE \ Microsoft \ VisualStudio \ 12.0 \ InstallDir设置为\ Common7 \ IDE \
c)covrun32.dll和covrun64.dll存在于" \ Team Tools \ Dynamic Code Coverage"
删除了VS110COMNTOOLS环境变量。这些变化对我有用。
答案 1 :(得分:-1)
我能够解决我的问题。我的生产DLL上没有发生代码覆盖的原因是:reason =" has_fixed_base"。将此设置更改为:是(/DYNAMICBASE
)后,覆盖范围就开始有效了。
检查这些步骤会很有帮助:
Linker->Advanced
页面Randomized Base Address
/DYNAMICBASE
)这应该开始代码覆盖。