java css js 合并_JS&CSS文件请求合并及压缩处理研究(四)

本篇将会尝试对之前的代码进行相关的单元测试,验证路径合并规则的覆盖率及正确性。

熟悉 ASP.NET MVC 开发的朋友应该知道,微软在MVC框架下集成了一款名为 Microsoft.VisualStudio.QualityTools.UnitTestFramework 的单元测试框架。这样我们就不再需要引用第三方诸如NUnit等测试框架了(顺便少受点Java同学的白眼:D)。而 Microsoft.VisualStudio.QualityTools.UnitTestFramework 测试框架的用法,和 NUnit 其实并没有什么大的区别。

对于ASP.NET MVC 应用程序来说,Controller作为连接View与Model的桥梁,很多时候我们都有必要对其稳定性和正确性创建针对的单元测试。这个过程在MVC中可以很容易的完成。下面我们就实际演示一下。

定位到Mcmurphy.Tests项目,添加引用:

(1),Mcmurphy.Web。我们的Controller并没有单独创建项目,而是存放于Mcmurphy.Web项目的Controllers下。所以对Controller的测试需要添加其引用。

(2),Microsoft.VisualStudio.QualityTools.UnitTestFramework 这是上面提到的微软在MVC中集成的单元测试框架。

接下来我们在Mcmurphy.Tests项目中,新建 HomeControllerTest.cs文件,添加以下代码:

usingSystem.Web.Mvc;usingMicrosoft.VisualStudio.TestTools.UnitTesting;usingMvcResourceHandle.Controllers;namespaceMcmurphy.Tests

{

[TestClass]public classHomeControllerTest

{

[TestMethod]public voidIndex()

{var controller = newHomeController();var result = controller.Index() asViewResult;

Assert.AreEqual("welcome to chengdu", result.ViewBag.Message);

}

}

}

然后我们修改 Mcmurphy.Web 项目Controllers目录下的HomeController.cs文件。调整一下 Index Action:

publicActionResult Index()

{

ViewBag.Message= "welcome to chengdu";returnView();

}

接下来我们:

f7598f3535699313ab3df4999a7fd36f.png

然后VS会弹出一个测试结果的对话框:

fcbf5e35daa9d5c60bd7fc4668cfb0dd.png

没错,就是这么简单。换作NUnit,我们只需要将 TestClass => TestFixture,TestMethod => Test。关于NUnit在此不再赘述。相关信息可以百度:TestDriven.NET。从名字就可以看出来,这又是从Java移植过来的哈。

这里我们用到了 Microsoft.VisualStudio.QualityTools.UnitTestFramework 最常用的两个属性,TestClassAttribute 和 TestMethodAttribute。当然还有一些比较有用的属性,比如 IgnoreAttribute,TimeoutAttribute,TestInitializeAttribute,AssemblyInitializeAttribute等。有兴趣的朋友可以了解下。

关于单元测试,还有一个比较重要的概念,就是Assert(断言)。顾名思义,就是对某一个结果进行事先的预测和判定。下面列出一些常见的单元测试断言:

Assert.AreEqual() //测试指定的值是否相等,如果相等,则测试通过

Assert.IsTrue() //测试指定的条件是否为true,如果为true,则测试通过

Assert.IsFalse() //测试指定的条件是否为false,如果为false,则测试通过

Assert.IsNull() //测试指定的对象是否为空,如果为空,则测试通过

Assert.IsNotNull() //测试指定的对象是否非空,如果不为空,则测试通过

Assert.IsInstanceOfType() //测试指定的对象是否为某一个类型的实例,如果是,则测试通过

Okay,对MVC的单元测试有了相应的知识储备之后,接下来我们开始“资源文件路径合并规则”的单元测试。

由于我们的AppendResFile、RemoveResFile、RenderResFile等方法扩展自 HtmlHelper ,而HtmlHelper对象又是HttpContext相关的。这里又牵涉到另外一个问题,即HttpContext是很难进行模拟的(Mock)。为了提高单元测试的可行性,微软随ASP.NET MVC发布了一个“抽象包”,专门用于对 HttpContext 及其相关组件进行抽象。这里我们会用到这个抽象包里面的 HttpContextBase 和 HttpRequestBase。(对应早先版本的 IHttpContext和 IHttpRequest)。

先一睹HttpContextBase的源码(部分截图):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值