AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

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

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

关注

评论

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

小程序容器致力在线政务服务平台建设一体化

Geek_2305a8

决定LED屏价格的关键因素

Dylan

产品 生产 LED显示屏 全彩LED显示屏 led显示屏厂家

吴恩达辞任Landing AI CEO,专注AI投资?数学家斯蒂芬预言哲学家引领AI未来|AI日报

可信AI进展

人工智能

有效提高媒体曝光率,智能推荐为什么是“最大的计算系统之一”?

爱AI的猫猫头

人工智能 音视频 大模型 推荐引擎 智能搜索

Rectangle Pro for Mac v3.0.31激活版 窗口管理布局工具

Rose

亲测兼容M1 PS2019 for mac中文直装版 附Photoshop2019破解补丁

Rose

Web Components 使用体验

yuanyxh

WebComponent webComponents

SRE 必备知识 - Kafka 探秘之零拷贝技术

巴辉特

kafka zero-copy

FlagEval 8月榜 | 文生视频大模型主观评测结果揭晓,新增6款新发布模型

智源研究院

如何设计真正的实时数据湖?

tapdata

实时数据湖 数据集处理流程 湖仓一体是什么

Oracle数据库客户端 SQLPro for Oracle for mac v1.0.302激活版

Rose

.ipynb文件:交互式 Jupyter Notebook

高端章鱼哥

IT行业怎么定义?需要堡垒机吗?

行云管家

堡垒机 IT行业

ETL数据集成丨实现SQLServer数据库的高效实时数据同步

RestCloud

MySQL 数据库 ETL SqlServer 数据集成

万亿数据规模下,火山引擎ByteHouse助力银行日志数据高效分析

字节跳动数据平台

数据库 云原生 Clickhouse 数仓

大模型没有“知识围城”

脑极体

AI

网易伏羲AI Agent 技术分享:揭秘AOP框架在《永劫无间》手游Copilot的应用实践

网易伏羲

aop agent 网易伏羲 Copilot 游戏AI

资源加载失败重载与前端升级检测方案

yuanyxh

前端 js

不使用 JS 纯 CSS 获取屏幕宽高

南城FE

CSS 前端

淘宝商品详情数据接口(商品价格,商品库存,商品销量,商品优惠券)

tbapi

淘宝商品详情数据接口 淘宝API接口

GalaChain 全面剖析:为 Web3 游戏和娱乐而生的创新区块链

Footprint Analytics

AE2024视频特效After Effects 2024 for Mac中文激活版

Mac相关知识分享

AE

我对管理的理解

老张

团队管理 管理者 人员招聘

官宣:KaiwuDB 开源啦!

KaiwuDB

KaiwuDB 开源啦

面试官:Leader崩溃Follower不够新怎么办?

王磊

百度搜索的RLHF性能优化实践

百度Geek说

百度 算法 性能优化

几个适合Java开发者的免费IDEA插件

EquatorCoco

Java IDEA 开发语言

利用淘宝商品评论API返回值优化商品转化率:策略与实践

代码忍者

专业视频和音频编码工具Adobe Media Encoder 2024 for Mac

Mac相关知识分享

从 0 到 1 搭建一个 No Server 的博客能学到什么

yuanyxh

前端 js React Blog

DDOS的防护方案

德迅云安全杨德俊

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