0

在过去的两个月里,我一直在努力学习新的 MVC 框架。在了解了所有面向对象的概念之后,我使用 MVC3、EF4 w/ DbContext 和 ASP.Net Membership 提供程序创建了一个测试站点。一切进展顺利。然后,我决定潜入并学习测试,从单元测试开始。

在我的头撞在键盘上两周之后,我现在感到非常沮丧。我浏览了大量的视频教程(TekPub、Plural-sight)、在线教程(ASP.Net、Microsoft 等)以及大量 StackOverflow 问题/答案。我现在有点(哈!)了解松散耦合、依赖注入、存储库、接口、存根、模拟(是的,我多次阅读 Fowler 的文章)、Shims、lambdas、重构......这个列表还在继续( ...等等。)。我看过 Ninject、Structuremap、Moq、TypeMock、JustMock、nUnit、xUnit 等...

所以我知道有很多方法可以给这只猫剥皮。现在我看到 VS11/MVC4 即将问世,他们有一个叫做 Fakes 的东西,这对于像 Membership 这样的静态方法来说似乎是一个不错的选择。

我的问题:

我想测试我的 MVC EF4/DbContext/Membership 应用程序。我的大多数页面都需要经过身份验证的用户 [Authorize],而那是在我使用要测试的实际方法之前。

如果您刚刚开始(像我一样),那么测试我的 CRUD 应用程序的最简单和最简单的方法是什么?我不一定喜欢在生产端运行 DI 框架(只是另一件可能出错的事情),而且我发现压裂的事情令人困惑,因为所有人都出去了。

我可以升级到 VS11/MVC4 并尝试使用 Fakes 方法。似乎稍微简单一些,但似乎我仍然需要 EF 的所有资源库/接口。

或者你会放弃它并使用像 Selenium 这样的集成测试工具(这是我之前在基于表单的开发中必须使用的工具)?

非常感谢任何建议。对不起,如果这是一个糟糕的问题,但我希望这里有一丝曙光......

4

1 回答 1

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://ayende.com/blog

和一些例子: 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

于 2012-07-16T07:48:19.073 回答