- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
代码覆盖从简到繁 (三) 划分Block
上一篇博客 《代码覆盖从简到繁 (二) – Block Coverage》介绍了Visual Studio所采用的Block覆盖中Block是如何定义的,并且展示了代码行与Block之间其实并不是严格对应的。本篇博客将通过.NET中间语言(IL)进一步分析Visual Studio是如何划分Block的,从而更准确回答代码行与Block不能严格对应的原因。
使用Visual Studio获取code coverage数据是非常简单的,只需要在配置中选择“Code Coverage”选项,然后直接执行测试用例就可以了就可以了,测试执行完毕后,覆盖数据会直接显现在Code Coverage Results”窗口中呈现出来,这些在《代码覆盖从简到繁 (一) 》中都有介绍。其实要获取覆盖数据,首先要对被测试的.exe或者.dll进行instrument,所谓instrument实际上就是向文件注入特定的用于收集覆盖数据的代码;然后,启动覆盖数据的监听服务,刚才注入代码会在被指定到时项监听程序发出报告;接下来就是要执行你的测试用例(可以是自动或者手动测试用例);停止监听服务,生成代码覆盖报告。为了易于使用,Visual Studio自动为我们上述很多工作。除了Visual Studio IDE, 通过命令行工具 VsInstr.exe,VsPerfmon和VsPerfCmd来完成获取覆盖数据的操作,Code Coverage Basics with Visual Studio Team System有详细的介绍,这里就不再赘述!这里需要注意:这些命令不只是用于代码覆盖,而是性能Profiling的 工具。
这里我们用到了VsInstr.exe -coverage命令,用它来instrument我们前面编写的代码,然后通过.NET的Ildasm.exe在IL层观察一下上一篇博客中使用的GetInteger()函数是如何被划分block的,下面就是Instrument之后的GetInteger()函数的IL代码(这里使用的Visual Studio 2010带的C#编译器,编译器不同产生的代码也会不同):
.method public hidebysig instance int32 GetInteger(int32 arg1, int32 arg2) cil managed { // Code size 204 (0xcc) .maxstack 3 .locals init ([0] int32 CS$1$0000, [1] bool CS$4$0001) IL_0000: call void Microsoft.VisualStudio.Coverage.Init_bbf9568946f2545aaa9b589093700f85::Register() IL_0005: ldsfld uint64[] Microsoft.VisualStudio.Coverage.Init_bbf9568946f2545aaa9b589093700f85::m_vscov IL_000a: ldc.i4 0x5 IL_000f: ldelem.i8 IL_0010: ldc.i8 0x1 IL_0019: add IL_001a: conv.i IL_001b: ldc.i4.1 IL_001c: stind.i1 IL_001d: nop 判断 arg1 0 IL_001e: ldarg.1 IL_001f: ldc.i4.0 IL_0020: ble.s IL_0043 如果 arg1 = 0,跳转到0043处。 IL_0022: ldsfld uint64[] Microsoft.VisualStudio.Coverage.Init_bbf9568946f2545aaa9b589093700f85::m_vscov IL_0027: ldc.i4 0x5 IL_002c: ldelem.i8 IL_002d: ldc.i8 0x2 IL_0036: add IL_0037: conv.i IL_0038: ldc.i4.1 IL_0039: stind.i1 IL_003a: ldarg.2 判断 arg2 0 IL_003b:
您可能关注的文档
- 从DEM中提取水系数据.doc
- 从优作身份看柯哀可能性.doc
- 今天跑去回顾了老马的TheEXBoyfriendTag视频.doc
- 从功能对等理论角度看校训的汉英翻译原则.doc
- 从刘若英到谭咏麟,他们在南昌都吃了些什么.doc
- 从卢梭《社会契约论》精神看行政机构改革.doc
- 从另类表白谈中国青少年心理危机3.doc
- 从前有个堂本家之七夕live.doc
- 从国际从国际商质EWHE看我国涉外仲裁证据制度的完善.doc
- 从城市管理到公共服务网格化社会化服务管理.doc
- 新视野二版听说1第6单元示范1课件.ppt
- 【参考答案】 联络口译(第二版) 《联络口译》(第二版)参考答案.pdf
- 梅大高速茶阳路段“5·1”塌方灾害调查评估报告.docx
- 虹吸雨水PE管施工节点标准做法.pdf
- 2025消防设施施工质量常见通病防治手册,典型图示+规范要求.pptx
- 新视野大学英语(第二版)读写教程 4 空军工程大学编U05B.ppt
- E英语教程2(智慧版)Unit 6.pptx
- E英语教程3(智慧版)Unit 7.ppt
- 新视野二版读写1第4单元课件Section A How to Make a Good Impression.pptx
- E英语视听说教程4(智慧版)4-U2课件(2024版)U2.pptx
最近下载
- 食品风味化学(第二版) 课件 第10--12章 风味料在食品加工中的应用、食品的异味、食品风味质量评价与安全控制.pptx
- 大班语言《美丽的礼物》.ppt
- 孟子对先秦名实观发展的贡献-来源:现代哲学(第2019003期)-广东哲学学会.pdf VIP
- 2023年江西财经大学信息管理与信息系统专业《数据结构与算法》科目期末试卷B(有答案).docx VIP
- 乡镇交通安全课件PPT.pptx VIP
- 影视欣赏社团活动计划.docx VIP
- 食品风味化学(第二版) 课件 第8、9章 风味物质的提取与分析、 食品中风味的释放和稳定化.pptx
- 2023年江西财经大学信息管理与信息系统专业《数据结构与算法》科目期末试卷A(有答案).docx VIP
- 《进食障碍》课件.ppt VIP
- 音乐_上学歌_课件.pptx
文档评论(0)