写点什么

谁来检查我们的单元测试?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:061338
用户头像

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

关注

评论

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

DawnSql快速入门

陈飞

微服务 分布式数据库 实时数仓

平时报表很复杂吗?瓴羊Quick BI智能报表轻松解决!

夏日星河

Teradata在华落幕,国产化崛起,袋鼠云数栈会是更好的选择吗?

袋鼠云数栈

3DMAX中的7个基本建模小窍门

Finovy Cloud

blender 3ds Max Cinema 4D

技术分享| anyRTC回声消除算法进化

anyRTC开发者

人工智能 音视频 回声消除 语音通话 视频通话

451个PyPI包通过安装Chrome扩展窃取加密信息

墨菲安全

供应链安全 投毒

揭穿数据分析的六大谎言

葡萄城技术团队

不被同事骂的代码规范,程序员们值得拥有!

程序员小毕

Java 程序员 程序人生 架构师 代码

5分钟入门物联网大数据计算——实践类

阿里云AIoT

阿里云 物联网 IoT

多模并起,万向融合 | 2023年2月《中国数据库行业分析报告》精彩抢先看

墨天轮

数据库 HTAP MatrixDB 多模数据库 超融合数据库

阿里张勇:全力投入生成式AI大模型建设,为行业发展提供好算力支撑

阿里技术

人工智能 云计算

父母、离别

毛广斌

生活

NFTScan 与 KNN3 在 NFT 数据层面达成合作伙伴关系

NFT Research

NFT web3

瓴羊Quick BI智能报表,让报表化复杂为简单!

巷子

热点面试题:为什么 0.1+ 0.2 != 0.3,如何让其相等?

沉浸式趣谈

JavaScript 面试 大前端 前端面试题 超全前端面试题

手把手教你如何快速检测设备异常——实践类

阿里云AIoT

阿里云 物联网 IoT

LED屏逐点校正指南

Dylan

像素 LED显示屏 全彩LED显示屏

DevEco Studio端云协同开发之云函数

白晓明

HarmonyOS 端云协同 云函数

电商难做?低代码开发平台为企业转型升级保驾护航

加入高科技仿生人

低代码 电商 数据管理 b2b

ChatGPT模拟MySQL数据库 | 社区征文

NineData

MySQL 数据库 编程 技术栈 ChatGPT

深入浅出玩转监控宝|网站监控之创建网站监控任务

云智慧AIOps社区

监控宝 监控工具 监控指标 #监控 网站监控

ChatGPT对于普通人有什么机会和影响?

引迈信息

人工智能 AI AIGC ChatGPT

Python 基础知识入门(三)

漫步桔田

【2.17-2.24】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

企业经常需要进行传输文件,大文件传输有哪些方法?

镭速

公众号接入 chatGPT 教程(附源码)

攻城狮杰森

Python AI openai ChatGPT

设备掉线怎么办?数据分析让冰冷的设备“开口说话”——实践类

阿里云AIoT

阿里云 物联网 IoT

这周末,StarRocks 邀请开发者们一起来上海 GAIDC 开源集市,各种任务等你来挑战!

StarRocks

数据库

瓴羊Quick BI率先提供移动端自助分析整体解决方案,成为行业的领导者!

流量猫猫头

Python基础知识入门(二)

漫步桔田

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