自己动手定制NUnit(三):整合ncover生成代码覆盖率报表
2006-03-28 21:39
295 查看
作为软件质量保证的重要一环,测试代码覆盖率是评判单元测试的重要标准。既然已经为你的代码编写了自动回归的单元测试,你当然想知道是不是所有的代码都测到了,完整的测试代码覆盖率可以说是零缺陷软件的决定性因素之一。
说到.net下的代码覆盖统计软件,当属NCover大名鼎鼎了,我们将其和NAant,Nunit一起配合使用,在每日构建和自动化测试领域是非常方便的,正如我前面所说的,对许多程序员而言,还是集成到一起比较方便使用,方便快捷地调用我想要的功能。因此,我将Ncover集成到了我的Nunit中。
由于现在的开发还是基于fw1.1,所以我也只用版本较低的NCover1.3.3,目前使用倒是没发现什么问题。不知道什么原因,在NCover的网站上没有找到1.3版的源代码,我只有反编译一下用,毕竟直接分析和修改源码还是方便很多。在NCover体系内,最重要的组件是Coverlib.dll,他是一个com组件,需要用regsvr32进行注册使用,当然如果你使用安装包,会自动进行安装的。
那么.net部分做了些什么呢?看看我调用Ncover实现功能的代码:
ProfilerSettings ps = new ProfilerSettings();
ps.CommandLineExe = "nunit-console.exe";
ps.CommandLineArgs = this._testLoader.TestFileName;
ps.CoverageFile = Path.Combine(new FileInfo(this._testLoader.TestFileName).Directory.FullName,"coverage.xml");
ProfilerDriver driver1 = new ProfilerDriver(ps);
driver1.Start();
driver1.WaitForExit();
System.Diagnostics.Process.Start(ps.CoverageFile);
NCover必须要传入一个可执行文件来进行检查哪些代码被调用了,被检查的引用组件必须有pdb调试文件,否则是不分析。在上面的代码中,我传入nunit的控制台程序,让他跑一遍当前的测试dll,然后设置输出文件到被测试的组件的目录下,开启nunit-console进程,待进程结束后,就会有一个converage.xml文件产生,浏览此文件就能看到统计结果。
public void Start()
我对ncover的代码作了些改动,使新进程在后台运行,否则一运行nunit-console就弹出来一个命令行,很是不爽。从上面的代码可以看出系统仅仅设置了下进程初始状态和环境变量,就完成了覆盖统计和xml文件生成。来看看环境变量的配置代码:
private void SetEnvironment(StringDictionary env)
其实这部分代码就是把相关变量存起来,好让真正的负责人-ConverLib.dll来进行处理。ConverLib.dll负责根据环境变量的值来进行代码的跟踪和记录,生成相关的XML文件。为了使xml更可读,需要把一个xsl文件也自动拷过去。
最后,我们在tools菜单上添加一项查看代码覆盖率报表:
说到.net下的代码覆盖统计软件,当属NCover大名鼎鼎了,我们将其和NAant,Nunit一起配合使用,在每日构建和自动化测试领域是非常方便的,正如我前面所说的,对许多程序员而言,还是集成到一起比较方便使用,方便快捷地调用我想要的功能。因此,我将Ncover集成到了我的Nunit中。
由于现在的开发还是基于fw1.1,所以我也只用版本较低的NCover1.3.3,目前使用倒是没发现什么问题。不知道什么原因,在NCover的网站上没有找到1.3版的源代码,我只有反编译一下用,毕竟直接分析和修改源码还是方便很多。在NCover体系内,最重要的组件是Coverlib.dll,他是一个com组件,需要用regsvr32进行注册使用,当然如果你使用安装包,会自动进行安装的。
那么.net部分做了些什么呢?看看我调用Ncover实现功能的代码:
ProfilerSettings ps = new ProfilerSettings();
ps.CommandLineExe = "nunit-console.exe";
ps.CommandLineArgs = this._testLoader.TestFileName;
ps.CoverageFile = Path.Combine(new FileInfo(this._testLoader.TestFileName).Directory.FullName,"coverage.xml");
ProfilerDriver driver1 = new ProfilerDriver(ps);
driver1.Start();
driver1.WaitForExit();
System.Diagnostics.Process.Start(ps.CoverageFile);
NCover必须要传入一个可执行文件来进行检查哪些代码被调用了,被检查的引用组件必须有pdb调试文件,否则是不分析。在上面的代码中,我传入nunit的控制台程序,让他跑一遍当前的测试dll,然后设置输出文件到被测试的组件的目录下,开启nunit-console进程,待进程结束后,就会有一个converage.xml文件产生,浏览此文件就能看到统计结果。
public void Start()
我对ncover的代码作了些改动,使新进程在后台运行,否则一运行nunit-console就弹出来一个命令行,很是不爽。从上面的代码可以看出系统仅仅设置了下进程初始状态和环境变量,就完成了覆盖统计和xml文件生成。来看看环境变量的配置代码:
private void SetEnvironment(StringDictionary env)
其实这部分代码就是把相关变量存起来,好让真正的负责人-ConverLib.dll来进行处理。ConverLib.dll负责根据环境变量的值来进行代码的跟踪和记录,生成相关的XML文件。为了使xml更可读,需要把一个xsl文件也自动拷过去。
最后,我们在tools菜单上添加一项查看代码覆盖率报表:
相关文章推荐
- 自己动手定制NUnit(三):整合ncover生成代码覆盖率报表(zhuan)
- 自己动手定制NUnit(二):生成报表
- 代码覆盖率之NCover整合NUnit
- 代码覆盖率之NCover整合NUnit
- atitit.自己动手开发编译器and解释器(2) ------语法分析,语义分析,代码生成--attilax总结
- 自己动手实现简易代码生成器、采用文本模板文件生成服务层、服务层接口代码的做法参考
- 自己动手写代码,整合Spring和Hibernate(二)之配置数据源
- 最近项目中有遇到报表数据入库的情况,数据量说大不大,说小又赖得自己手动敲!于是自己动手写了一个入库的,下面直接上代码,如有同样的,请联系我删除此文
- atitit.自己动手开发编译器and解释器(2) ------语法分析,语义分析,代码生成--attilax总结
- 自己动手开发编译器(十二)生成托管代码
- 自己动手写代码,整合Spring和Hibernate(一)和FactoryBean的使用
- 【干货】自己动手打造专属代码生成工具(完结篇)
- 自己动手开发编译器(十二)生成托管代码
- 自己动手实现简易代码生成器、采用文本模板文件生成服务层、服务层接口代码的做法参考
- 自己动手实现简易代码生成器、采用文本模板文件生成服务层、服务层接口代码的做法参考
- 自己动手定制NUnit(一):增加函数说明显示
- 自己动手写代码,整合Spring和Hibernate(三)之DAOSupport和DAOTemplate
- ASP.NET大型OA中常用的一些报表生成,压缩,下载等操作代码
- 使用T4Scaffolding 创建自己的代码生成
- RT-Thread从开源代码生成自己的工程