在过去的两个月里,我一直在努力学习新的MVC框架。在了解了所有面向对象的概念之后,我使用MVC3,EF4 w / DbContext和ASP.Net成员资格提供程序创建了一个测试站点。一切都很顺利。然后,我决定潜入并学习测试,从单元测试开始。
在我的头撞击键盘两周后,我现在感到很沮丧。我已经完成了大量的视频教程(TekPub,Plural-sight),在线教程(ASP.Net,Microsoft等等)和大量的StackOverflow问题/答案。我现在 sort-of (哈!)理解松散耦合,依赖注入,存储库,接口,存根,模拟(是的,我多次阅读Fowler文章),Shims,lambdas,重构......列表一直在继续(......和。)。我看过Ninject,Structuremap,Moq,TypeMock,JustMock,nUnit,xUnit等......
所以我知道有很多方法可以给这只猫上皮。现在我看到VS11 / MVC4正在问世,他们有一个名为Fakes的东西,它似乎是静态方法的一个很好的选择,比如会员资格。
我的问题:
我想测试我的MVC EF4 / DbContext / Membership应用程序。我的大多数页面都需要经过身份验证的用户[授权],之后我才能进入实际的测试方法。
如果你刚刚开始(像我一样),测试我的CRUD应用程序的最简单,最简单的方法是什么?我不一定喜欢在生产方面运行DI框架(只是另一件可能出错的东西)而且我发现压裂事情让人感到困惑,因为所有人都会离开。
我可以升级到VS11 / MVC4并尝试Fakes方法。似乎稍微简单,但似乎我需要所有资源库的存储库/接口。
或者你只是扔掉它并使用像Selenium这样的集成测试工具(这是我之前在使用基于Forms的开发时必须使用的工具)?
非常感谢任何建议。对不起,如果这是一个糟糕的问题,但我希望这里有一丝光......
答案 0 :(得分:0)
对于所有版本的mvc或程序,其测试方式几乎相同。
你的大多数逻辑都基于接口。 这将允许您分离关注点和单元测试您需要的任何东西,这将使您可以伪造(创建虚假实现)或模拟(在运行时创建类,表示您想要的逻辑,使用Mock或Rhino Mock)逻辑。
您可以在此处阅读有关基本单元测试的更多信息:
http://msdn.microsoft.com/en-us/magazine/dd942838.aspx
我也建议你看一下Steven Sanderson的示例应用程序,包括大多数部件的单元测试。
http://www.amazon.co.uk/Pro-ASP-NET-MVC-Framework-ebook/dp/B005PZ07US
在这里您可以了解MOQ http://www.codeproject.com/Tips/182847/An-Introduction-to-MOQ
您有替代方案,例如rhino mock:
和一些例子: http://daysincode.blogspot.com/2012/06/examples-of-mocking-with-rhino-moq.html
当然,这里的所有内容都会导致:http://msdn.microsoft.com/en-us/magazine/ekstremalna-przerobka-asp-net--czesc6-podzial-obowiazkow.aspx