大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

谁来检查我们的单元测试?NCover2!

  • 2007-10-10
  • 本文字数:1096 字

    阅读完需:约 4 分钟

随着 NUnit 和 Visual Studio.NET 2005 的推出,对.NET 代码作单元测试似乎越来越容易了,而且更加自动化。但您是否考虑过这些单元测试是否真正“有效”呢?还是仅仅自我安慰的“额外工作量”呢?NCover 起码可以帮忙做做检查。以前 NCover 是个开源的框架, 最近它已经被商品化了。

Gnoso 把 NCover 升级成为 2.0 版,并把它商品化了。虽然,之前通过开源方式可以获得 NCover,但可能因为它定位的领域太吸引人了,以至于它的升级速度和集成性方面反倒总是差强人意。NCover 是一个用来检查.NET 单元测试代码与实际代码覆盖分析的工具,它在执行单元测试的过程中对执行情况进行监测,然后会记录下单元测试都调用过哪些代码,不过最重要的是它记录下哪些代码实际没有被单元测试掉用到。你也许觉得“我严格按照 Write a little,Test a little”的步骤在编写单元测试,就是漏掉也很显眼,因为我写了 [todo] 了,但事实情况并非如此:

  • 面向对象一个特点就是多态,虚方法、抽象方法、重载方法、委托这些都很可能成为您察看不到的“死角”;
  • 1000 行的代码也许做这么一次覆盖检查不麻烦,不过如果您负责一个 1,000, 000 行代码的项目,想看看大家是不是把该做的单元测试都作了,恐怕要写要记录的东西不是 3、4 个人可以做得来的;
  • 这些都不算最坏的情况,软件界有一个不变的规律就是变化本身,如果增加或者修改掉了一块功能,单凭人工在代码中翻腾一次这个经历就太痛苦了,不过这还没有短痛,都是长痛,别忘了唯一不变的就是变化。

虽然不一定特别权威,但 NCover 起码从覆盖角度告诉我们“你的单元测试做的是否够好”。很多人更喜欢它是因为他无须象其他类似工具在代码上增加“痕迹”,它可以直接在生产代码上进行检查,而且可以对 Web Service 和.NET Windows Service 这些后台服务类代码进行检查。此次 2.0 产品化版本中,主要对产品得易用性作了较大改善,以前游离在外面的 NCoverExplorer 被集成到 NConver 里面,这样检查报告看起来更加人性化,而且还支持同时看多个项目(Project),毕竟.NET 项目开发一般都是 Solution 层次的,一遍遍打开每个项目的报告确实惹人烦。企业版中还有一个特别有用的特性,就是可以把执行路径画出来,并记录下每个步骤的执行时间,相信您以前总碰到过类似的困扰——“到底怎么了,为什么跑得这么慢啊?”。NCover 可以用图形化的方式展现这个执行过程。生产代码检查 +Assembly 检查 + 可视化执行路径,相信 NCover 会成为性能调整和代码优化的得力工具。

商品化之后,试用 NCover 感觉比以前舒服多了(不过要收 100$+ 的使用许可了)。相信对于开发团队,尤其是“代码就是设计”的敏捷团队而言,NCover 也可以作为一个不错的把关工具。

2007-10-10 21:061684
用户头像

发布了 61 篇内容, 共 14.3 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

国内首家!博睿数据获信通院AIOps能力成熟度模型优秀评级

博睿数据

智能运维 博睿数据 Swift AI K可观测性 荣誉奖项

架构实战营10期-作业3

炮仗

极客时间运维进阶训练营第一周作业

独钓寒江

华为云弹性负载均衡服务,如何助企业应付流量压力

科技说

Web3 聚合平台 AIDAMETA,圣诞BNB 大放送

股市老人

未来智安入围《2022年度中国数字安全能力图谱》威胁检测与响应领域能力者

未来智安XDR SEC

【JavaWeb】Java Web三大组件之Filter过滤器

No8g攻城狮

javaWeb #web

基于声网 Flat 实现“成语解谜”的 Web 小游戏

声网

JavaScript 开源 Web 互动白板

华为云桌面为建筑行业BIM落地实施提供有力支撑

科技之光

HTTP响应首部字段

穿过生命散发芬芳

HTTP 12月月更

从非洲到全球,看华为云连接CC如何助力出海企业更好发展

IT科技苏辞

【JVM规范】第二章-JVM结构

四月

Java JVM

微服务洞察,让微服务更透明

阿里巴巴云原生

阿里云 微服务 云原生

华为云桌面,助力企业智慧办公

科技之光

“灵、简、畅、安”,就选华为云桌面

科技之光

【前端】JS(javascript)中this的几种用法实例详解

No8g攻城狮

JavaScript js

2022年混过的那些SAP项目

SAP虾客

wms 2022年 SAP-QM

正确理解和使用JAVA中的字符串常量池

JAVA旭阳

Java

怎么搭建自己的小型渲染农场?个人渲染农场配置

Renderbus瑞云渲染农场

渲染农场 搭建渲染农场

架构实战营 3-6 消息队列架构详设随堂练习

西山薄凉

「架构实战营」

华为云连接CC——多场景构建数据网,助力企业享受高质量办公体验

IT科技苏辞

数智为线,经纬中国:新华三勾勒出的山河锦绣

脑极体

使用NineData实现企业级数据库备份, 数据备份告别“拆盲盒” ?

NineData

sql 数据恢复 多云架构 数据管理工具 数据备份

主数据的3大特征、4个超越和3个二八原则

用友BIP

华为全球加速GA带给你稳定的网络体验!

清欢科技

Genymotion模拟器安装

芯动大师

android Genymotion Android模拟器

有奖评测 | Serverless 应用引擎 SAE 征集令开启

阿里巴巴云原生

阿里云 Serverless 云原生

华为云全球加速GA,为现代企业跨国办公保驾护航

清欢科技

《数字经济全景白皮书》中国产业数字化趋势报告2023

易观分析

产业数字化 报告

2022-12-26:有一个数组包含0、1、2三种值, 有m次修改机会,第一种将所有连通的1变为0,修改次数-1, 第二种将所有连通的2变为1或0,修改次数-2, 返回m次修改机会的情况下,让最大的0

福大大架构师每日一题

Linux 算法 Shell 福大大

华为云左少夫:面向分布式云原生 构筑无处不在的云原生基础设施

爱科技的水月

谁来检查我们的单元测试?NCover2!_.NET_王翔_InfoQ精选文章