写点什么

Microsoft Fakes——Shims 简介

  • 2012-06-26
  • 本文字数:550 字

    阅读完需:约 2 分钟

Shims 是 Microsoft Fakes Framework 的一部分,支持测试时的方法拦截——包括框架方法。它实现了侵入性更小的单元测试, Rich Czyzewski 在其名为“ Noninvasive Unit Testing in ASP.NET MVC4 – A Microsoft Fakes Deep Dive ”的文章中对其进行了介绍。

那么到底何为非侵入测试呢?Rich 举了一个简单的例子,目前对 FormsAuthentication.SignOut() 的调用需要包装到单独的一个类中,这样就可以对调用对象进行单元测试了,因为FormsAuthentication 依赖于 HttpContext ,而后者在运行测试时还尚未初始化。这就是侵入式的,因为这要求调整设计,目的仅仅是为了测试。

另一方面,Shims 可以拦截到对 FormsAuthentication.SignOut() 的调用,然后调用我们自己的实现——这样就不必仅仅为了测试的目的对类进行包装,同时还降低了测试的侵入性。

对于 Microsoft Fakes Framework 新手来说, Shim Types 可用于拦截并替换下面所有类型的方法调用:

  • 静态方法
  • 实例方法(针对所有实例或是某个特定实例)
  • 正常与静态的构造方法

除了模拟类之外,Shims 还可以绑定到接口上。

Fakes Framework 可与任何单元测试框架搭配使用,包括 NUnit。Rich 还对 VS 2010 引入的 Moles 技术与 VS 11 引入的 Fakes 进行了详尽的对比,他们之间的某些特性是非常相似的。

查看英文原文: Deep Dive With Microsoft Fakes – Shims

2012-06-26 04:542088
用户头像

发布了 88 篇内容, 共 268.3 次阅读, 收获喜欢 8 次。

关注

评论

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

ReactNative进阶(二):ReactNative 项目文件结构介绍

No Silver Bullet

React Native 1月月更

基于机器学习和TFIDF的情感分类算法,详解自然语言处理

华为云开发者联盟

自然语言处理 机器学习 算法 TFIDF 情感分类

惟客数据“惟客云”升级:稳操胜“券”,助力商家精准营销

科技热闻

Java后端学习笔记

SBB

Java 学习笔记 学习路线

Elasticsearch 多种跨机房灾备方案对比与实战解读

Se7en

Python猫 2021 文章小结,翻译竟比原创多!

Python猫

Python

Kafka的灵魂伴侣LogiKM(1)之集群的接入及相关概念讲解

Kafka中文社区

【直播预告】全国人工智能大赛赛题讲解直播来啦!1月6日晚20点,不见不散!

OpenI启智社区

人工智能大赛

Greenplum 内核源码分析 - 分布式事务 (五)

王凤刚(ginobiliwang)

源码分析 greenplum 分布式式事务

安装VTK配置出现错误

Ayosh

qt

「offer来了」面试中必考的15个html知识点

星期一研究室

html html5 css3 前端 html/css

如何解决JDBC死链接导致NIFI线程假死

编程江湖

阿里巴巴集团副总裁贾扬清-一个AI开发者的奇幻漂流

大咖说

docker

Docker jenkins pipeline

VRAR产业峰会暨第二届华为VR开发应用大赛颁奖典礼在和平区成功举办!

华为云开发者联盟

云计算 5G AR 华为云 vr

React 中五种常见的使用样式

编程江湖

React

Tableau Day1: 完成第一个可视化

贾献华

Tableau 1月月更

设计模式【7】-- 探索一下桥接模式

秦怀杂货店

Java 设计模式 桥接模式

一图解析MySQL执行查询全流程

华为云开发者联盟

MySQL 服务器 数据包 查询语句 应用层

网络安全好学吗?手把手教你学metasploit 网络安全工程师学习资料汇总

学神来啦

Java开发之SSM框架整合配置知识分享

@零度

ssm JAVA开发

Dumpling 导出表内并发优化丨TiDB 工具分享

PingCAP

甲方,你们愿意被乙方侮辱吗?

码农一米

云计算 云服务

带你认识传统语音识别技术

华为云开发者联盟

语音识别 语言模型 声学模型 隐马尔可夫链 WFST解码

HBase 优化如何操作

编程江湖

HBase

应收账款的界定

whatever

供应链金融 保理

三星堆遗址

wood

300天创作 三星堆

【MongoDB学习笔记】MongoDB索引那点事

恒生LIGHT云社区

数据库 mongodb 索引

自创解法!setTimeout+Promise+Async输出顺序?简单的一匹!!

Sunshine_Lin

面试 前端 ES6 Promise Async

前端培训:React Native 开发过程中遇到的坑

@零度

前端开发 ​React Native

Stellantis集团将于2022CES展期间召开网络直播发布会

InfoQ_967a83c6d0d7

Microsoft Fakes——Shims简介_语言 & 开发_Roopesh Shenoy_InfoQ精选文章