【问题标题】:Unit Test ASP.net Page_Load单元测试 ASP.net Page_Load
【发布时间】:2011-08-03 06:01:05
【问题描述】:

如何为 ASP.net 中的 Page_Load 函数创建单元测试?

我正在使用 Visual Studio 单元测试框架中的构建。我想创建一个单元测试来检查网页的元素及其值。

我了解 selenium 及其在单元测试中的能力。

这是测试WebPageControl.ascx.vb的网页:

   Public Class WebPageControl
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            TextBox.Visible = False
        End Sub
End Class

这是单元测试WebPageControlTest.vb:

Public Class WebPageControlTest
    Public Sub PageLoadTest()

        Dim target As WebPageControl_Accessor = New WebPageControl_Accessor() 
        Assert.IsFAlse(target.TextBox.Visible)
    End Sub
End Class

执行此操作后,我仍然收到错误

Test method RechargeTest.WebPageControlTest.PageLoadTest threw exception: System.NullReferenceException: Object reference not set to an instance of an object.

【问题讨论】:

    标签: asp.net vb.net unit-testing


    【解决方案1】:

    如果您想要可测试的 ASP.NET WebForms 代码,请查看此项目。 http://webformsmvp.com/

    【讨论】:

    【解决方案2】:

    Web 表单确实不是为了通过单元测试运行而构建的。 Here's 一篇关于我正在谈论的内容的好文章。如果您真的希望您的页面可测试,我会考虑转移到 asp.net mvc 或 mvp。

    【讨论】:

      【解决方案3】:

      您可能无法在 ASP.NET 运行时之外新建页面。

      您可能想在 ASP.NET 下搜索 MVP(模型-视图-演示者)模式。恕我直言,它使测试 Web 代码变得更加容易。这篇文章是一个很好的起点:

      http://haacked.com/archive/2006/08/09/ASP.NETSupervisingControllerModelViewPresenterFromSchematicToUnitTestsToCode.aspx

      【讨论】:

      • 应该有在经典 ASP.net 上运行自动化测试的方法,因为它已经问世十年了。 iMacro 是其中之一,但我不知道它是否会向您发送短信。也许有人可以用更好的东西来回应
      • @kacalapy 正如OP所述,您可以为此使用Selenium。如果您想在不运行整个 Web 应用程序的情况下进行测试,并编写实际的单元测试而不是集成测试,我建议您查看 MVP 模式。由于 Presenter 负责完成大部分工作,并且他们从 ASP.NET 中分离出来,因此为这些 Presenter 编写测试代码非常容易。和 MVC 的模式类似,从经验上来说,我觉得效果很好。
      • 感谢您的帮助。我现在有一个问题,测试网络表单不常见吗?
      • 我想说直接使用 NUnit 或 VS.NET 单元测试框架之类的工具测试 Web 表单并不常见。对于测试 web 表单,像 Selenium 这样的工具可能会很好用(虽然我没有使用过)。我理解的方式是您基本上需要发出 HTTP 请求并检查结果。这些测试实际上是集成测试,因为它们依赖于整个应用程序是否正常工作。尽管要测试以下情况,但使用这种方法会很困难:用户在表单中输入有效数据并单击“确定”,但随后出现 db 错误,是否显示正确的错误消息?
      • 如果您使用像 MVP 这样的模式,您将拥有一个新类,称为 Presenter,它与 ASP.NET 隔离。我不能在这里详细介绍所有细节,但是使用 MVP 可以很容易地测试我上面提到的情况,因为您可以模拟/存根您的 Web 表单(即视图)和模型(您的数据类,即如果您使用 IoC,则特别容易),然后您只需确保 Presenter 翻转 View 上的适当开关以显示错误消息。
      猜你喜欢
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 2019-12-13
      • 2012-03-18
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多