【问题标题】:How to write Unit Tests for Web Applications and Controls如何为 Web 应用程序和控件编写单元测试
【发布时间】:2008-12-07 01:14:27
【问题描述】:

我只是在学习单元测试。我正在使用 NUnit 为 VB.NET 项目构建测试。

我正在进行的项目是构建 ASP.NET 网站的人将使用的框架的一部分。它包括一个基类(继承System.Web.HttpApplication),我的框架的用户将从中继承他们的应用程序类。

该项目还包含许多复合控件。

目前我不太清楚您将如何为应用程序基类或任何复合控​​件编写测试。

在应用程序基类的情况下,单元测试项目是否应该包含一个继承自它的类,然后对其进行测试?

任何指针将不胜感激!

谢谢。

【问题讨论】:

    标签: .net unit-testing nunit


    【解决方案1】:

    正如您所说,我将通过创建一个子类并对其进行测试来间接测试应用程序基类。

    对于控件,我会使用 Selenium:http://selenium.seleniumhq.org/。

    【讨论】:

      【解决方案2】:

      它不再维护,但有NUnitAsp。

      [Test] 
      public void TestExample() 
      { 
         // First, instantiate "Tester" objects: 
         LabelTester label = new LabelTester("textLabel"); 
         LinkButtonTester link = new LinkButtonTester("linkButton"); 
      
         // Second, visit the page being tested: 
         Browser.GetPage("http://localhost/example/example.aspx"); 
      
         // Third, use tester objects to test the page: 
         Assert.AreEqual("Not clicked.", label.Text); 
         link.Click(); 
         Assert.AreEqual("Clicked once.", label.Text); 
         link.Click(); 
         Assert.AreEqual("Clicked twice.", label.Text); 
      }
      

      【讨论】:

        【解决方案3】:

        这只是部分答案。 This 是你在 Django 中做这种事情的方式。我想在 ASP.NET 中有类似的东西。对于测试客户端代码,有 jsUnit 之类的东西。

        【讨论】:

          【解决方案4】:

          我可以通过为我正在单元测试的 Web 控件创建一个存根并调用受保护的 RenderContents() 方法并验证 HTML 来做到这一点:

          [Test]
          public void ConditionQueryBuilderTest_RendersProperHtml()
          {
              var sw = new StringWriter();
              var queryBuilder = new ConditionQueryBuilderStub
              {
                  ID = "UnitTestbuilder",
                  QueryBuilderURL = @"\SomeAspxPage\SomeWebMethod",
                  ResetQueryBuilderURL = @"\SomeAspxPage\OnQueryBuilderReset",
                  FilterValuesCollection = new Dictionary<int, string> { {15, "Some Condition"}}
              };
              queryBuilder.RenderAllContents(new HtmlTextWriter(sw)); // This is a method in my stub that exposes RenderContents()
          
              AppendLog(sw.ToString());
          
              Assert.AreEqual(ExpectedHtml, sw.ToString());
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-02-27
            • 1970-01-01
            • 2021-01-24
            • 2015-06-27
            • 2021-03-27
            • 2021-04-07
            • 1970-01-01
            相关资源
            最近更新 更多