对 ASP.NET 2.0 网页进行单元测试的最佳方法是啥? [关闭]

Posted

技术标签:

【中文标题】对 ASP.NET 2.0 网页进行单元测试的最佳方法是啥? [关闭]【英文标题】:What is the best way to do unit testing for ASP.NET 2.0 web pages? [closed]对 ASP.NET 2.0 网页进行单元测试的最佳方法是什么? [关闭] 【发布时间】:2010-09-05 11:37:39 【问题描述】:

有什么建议吗?在 C# 中使用 Visual Studio。

是否有任何特定的工具可以使用或方法来解决这个问题?

更新:

对不起,我应该更具体一点。我正在使用 ASP.Net 2.0,并且正在寻找更多类似 jUnit for Java 的工具。我看了一下 NUnit 和 NUnitAsp,看起来很有希望。而且我什至不知道 Visual Studio Pro 有一个测试套件,所以我会看看所有这些选项(我今年夏天才开始使用 Visual Studio/Asp.net/C#)。

【问题讨论】:

【参考方案1】:

男孩,这是一个非常笼统的问题。我会尽力而为,但要准备好让我错过一英里。

假设

    您使用的是 ASP.NET,而不是普通的 ASP 您并不是真的想测试您的网页,而是测试它们背后的逻辑。对实际的 .ASPX 页面进行单元测试是相当痛苦的,但是有框架可以做到这一点。 NUnitAsp 是一个。

首先要做的是组织(或计划)您的代码,以便对其进行测试。当时最流行的两种设计模式似乎是 MVP 和 MVC。两者都将应用程序的逻辑视图分开,这样您就可以在不妨碍视图(网页)的情况下测试逻辑。

MVP 或 MVC 都会有效。 MVC 的优势在于拥有 Microsoft 框架almost ready to go。

一旦您选择了鼓励可测试性的框架模式,您就需要使用单元测试工具。 NUnit 是一个很好的起点。 Visual Studio Professional 有一个 testing suite built it,但 NUnit + TestDrive.NET 也适用于 IDE。

这有点像霰弹枪般的信息爆炸。我希望一些如果它击中。实用书架有一个good book covering the topic。

【讨论】:

Visual Studio 2008 带有 MSTest 并允许非常无缝的单元测试能力。同样关于 ASP.NET MVC,当您创建一个新项目时,Visual Studio 也会要求您为其构建一个测试项目。我以前使用过 MVP 和一些 MVC,这让测试变得容易得多。 NUnitAsp 不再受支持:编写它的人提出了正确的观点,即“知道的人正在使用表示层使 ASP.NET 变得如此薄,以至于像 NUnitAsp 这样的工具没有帮助。 " 从 xUnit.net [xunit.codeplex.com/]、NUnit 和 MSTest 中选择单元测试框架,我会选择 xUnit.net,它由 Microsoft 的 codeplex.com 经理 Jim Newkirk 和 Brad 编写威尔逊。 JN 也被列为 NUnit 2.0 的创建者。至少对我来说,当微软高级员工像 JN 和 BW 选择忽略 MSTest 和 NUnit 时,它说明了一些事情。同样,ASP.NET MVC 是为可测试性而构建的,请参阅 Rob Conery 的 blog.wekeroad.com/blog/…。此外,我花了四个月的大部分时间评估 xUnit.net 与 MSTest。【参考方案2】:

这些框架对于集成测试很有用,但它们不能提供单元测试,即测试与持久性、业务逻辑等隔离的视图。

对于 unit 测试 Asp.Net Webforms 以及 MVC,您可以使用 Ivonna。例如,您可以模拟您的数据库访问并验证模拟的记录是否显示在数据网格中。或者,您可以模拟成员资格提供程序并测试登录场景,而无需导航到登录页面并输入您的凭据,就像集成测试一样。

【讨论】:

【参考方案3】:

大约一年前有一个关于 Polymorphic Podcast 的截屏视频系列,它对 ASP.NET 中的 MVP 实现进行了很好的介绍性演练。以这种方式实现,单元测试更自然地落实到位。

http://polymorphicpodcast.com/shows/mv-patterns/

【讨论】:

【参考方案4】:

WatiN 是我找到的最好的。它集成到 Visual Studio 单元测试或 nunit 中,您可以在浏览器中执行几乎所有需要的操作(单击链接、提交表单、查找文本/图像等),而且它是用 .net 编写的,因此您不需要安装 ruby​​(就像你安装 watir 一样,这是一个很棒的工具)

【讨论】:

我完全同意。我使用 Watir 已经有一段时间了,但我有时会遇到 ruby​​ 框架的问题。使用 WatiN 更好。我不必安装 ruby​​ 并获得智能感知。 WatiN 很棒,它是一个集成测试工具。单元测试!= 集成测试。 是的,我以为他们就是这个意思,我在他们澄清问题之前就回答了。【参考方案5】:

看看http://selenium.openqa.org/,它提供了一种很好的自动化方式来构建挂钩到浏览器的单元测试。有一个不错的 Firefox 插件用于记录测试,并且可以使用几乎任何单元测试框架。上个月我们在本地用户组会议上做了一个演示/演示,看起来很棒。

【讨论】:

或见seleniumhq.org【参考方案6】:

最好的办法是将模型逻辑与表示分离,并使用 NUnit 或类似工具对模型进行彻底的单元测试。测试用户与网页的交互可能很繁琐。

如果您确实想对用户与网页的交互进行单元测试,那么一些上述工具(例如 waitn)似乎不错,除了我听说的之外,还有 Selenium

【讨论】:

我的手指也经常犯这个错误:它是“WatiN”,发音为“What-in”,表示“.NET 中的 Web 应用程序测试”[watin.org/]。有一个有用的相关工具叫做“WatiN 测试记录器”[watintestrecord.sourceforge.net/].【参考方案7】:

NUnit 是适合您的方式。 你可以在这里找到一些链接:

    http://nunitasp.sourceforge.net/tutorial/ NUnit Unit Testing of ASP.NET Pages, Base Classes, Controls and other widgetry using Cassini by Scott Hanselman

【讨论】:

以上是关于对 ASP.NET 2.0 网页进行单元测试的最佳方法是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何对 Asp.net MVC 文件进行单元测试

如何使用构造函数依赖注入对 asp.net 核心应用程序进行单元测试

使用 Request.CreateResponse 进行 ASP.NET WebApi 单元测试

在 VS 2017 中针对完整的 .net 框架 asp.net 核心项目运行 XUnit 2.2.0 单元测试时出现 System.BadImageFormatException

ASP.NET 系列:单元测试之ConfigurationManager

单元测试 ASP.NET Web API