单元测试 IHttpModule

Posted

技术标签:

【中文标题】单元测试 IHttpModule【英文标题】:Unit testing IHttpModule 【发布时间】:2010-09-06 17:12:17 【问题描述】:

鉴于HttpApplicationHttpContext 没有实现接口,你如何在asp.net 中对HttpModule 进行单元测试?

【问题讨论】:

【参考方案1】:

本质上你需要去掉 HttpModule 对 HttpApplication 和 HttpContext 的依赖,用一个接口代替它们。您可以创建自己的 IHttpApplication 和 IHttpContext(以及 IHttpResonse、IHttpRequest 等)或使用@Dale Ragan 提到的那些或使用 System.Web.Abstractions 中与 asp.net mvc 预览捆绑在一起的闪亮新的。

【讨论】:

你能给我指点@Dale Ragan 的文章吗? PS:我无法访问 Twitter 我实际上指的是直接在这个下面的答案:)【参考方案2】:

过去在迁移到 ASP.NET MVC 之前,我使用 this libraryPhil Haack 创建用于单元测试的任何使用 HttpApplication 和 HttpContext 的东西。它反过来使用了Duck Typing library。

不幸的是,这是最好的方法。 ASP.NET 并非易于测试。当他们在 ASP.NET MVC 上工作时,目标之一是通过使框架更具可测试性来摆脱这些令人头疼的问题。

【讨论】:

【参考方案3】:

您可以使用隔离(模拟)框架。我知道有两个工具可以让你伪造/模拟任何 .NET 对象 - Typemock Isolator 和 Telerik JustMock 我认为你也可以使用 Moles。

如果任何 .NET 对象事件没有实现接口,甚至没有公共 c'tor,以上所有内容都可以让您伪造。

【讨论】:

以上是关于单元测试 IHttpModule的主要内容,如果未能解决你的问题,请参考以下文章

.NET 单元测试的艺术&单元测试之道C#版

什么是单元测试?如何做好单元测试?

测试篇——初探单元测试

单元测试

Java单元测试介绍

Android如何进行单元测试(转)