【问题标题】:NUnit testcases for WebFormWeb 表单的 NUnit 测试用例
【发布时间】:2012-09-15 23:52:28
【问题描述】:

我是 asp、C#、nunit 的新手。我正在尝试为一个没有任何业务逻辑的简单 Web 表单编写(做我的家庭作业/作业)nunit 测试用例。

网络表单有 4 个文本框(姓名、电子邮件地址、密码、电话号码) ,一个广播列表,下拉列表(性别)。该表单只是验证数据并将数据显示在另一个页面中作为输出文本(标签)。 验证只是电子邮件、电话的正则表达式验证。名称和密码的长度验证。 requiredField 验证性别。

请建议我如何为这个 web 表单编写 NUnit 测试用例

例如,如果有计算阶乘的方法,我首先使用参数在代码中给出(例如:4)调用该方法。它返回我 4!进入变量“结果”(即结果现在有 24 个)。 然后我会调用 AssertEquals(24,result)

因此,对于需要用户输入的 Web 表单。代码中没有给出输入。 AssertEquals 的参数是什么

谢谢,

【问题讨论】:

  • 如果你想“单元测试”表示逻辑,你需要分离你的关注点,像 MVP 这样的模式可以做到这一点

标签: c# asp.net nunit


【解决方案1】:

最终,您可以做的(根据 jflood.net 的评论)是将您的担忧分开。所以目前你有两个主要问题(你甚至可以进一步分解它,但我们也应该避免过度设计) - 向用户呈现数据并验证用户的输入。

您的 ASP.NET WebForm 代码处理问题 #1。为了将验证问题分开,您应该创建一个新的验证类来处理验证逻辑。类似的东西

public class Validator
{
     public bool ValidateEmail(string email)
     {
          bool valid = false;
          //Run RegEx validation and set the valid flag
          return valid;
     }
}

现在在您的页面加载中,您可以使用这个新类

 protected void Page_Load(object sender, EventArgs e)
 {
      Validator validator = new Validator();
      string email = Request.Form["EmailInput"];
      bool isEmailValid = validator.ValidateEmail(email);

      if (isEmailValid)
          Response.Write("Email is valid");
 }

请注意,这是一些伪代码,因为这是用于家庭作业,我不想输入完整的解决方案。

现在您已将验证问题分离到其自己的类中。这样更容易理解,也更容易进行单元测试。

您现在需要为 Validator 类编写单元测试,特别是在本例中为 ValidateEmail。

这是一个例子

  [Test]
  public void ValidateGoodEmail()
  {
     Validator validator = new Validator();
     bool shouldBeTrue = validator.ValidateEmail("test@test.com");

     Assert.AreEqual(true, shouldBeTrue);
  }

  [Test]
  public void ValidateBadEmail()
  {
     Validator validator = new Validator();
     bool shouldBeFalse = validator.ValidateEmail("test@.com");

     Assert.AreEqual(false, shouldBeFalse);
  }

请记住,在单元测试中,您只是在测试不同的逻辑流程。您不必测试任何输入,因此在这里我测试了使用给定错误电子邮件地址的错误验证和使用良好电子邮件地址的真实验证。

希望对你有帮助

【解决方案2】:

您是否可以使用 SeleniumWatiN 等 Web 测试框架?如果是这样,您可以使用它们在浏览器中打开网站,在文本框中输入值并在页面上查找失败文本的成功。

【讨论】:

  • 我对模拟请求、输入用户输入的 selenium 不太熟悉。但我正在考虑如何在不使用硒的情况下编写测试用例。而且我不允许使用 selenium 或 watiN
【解决方案3】:

如果您无法使用 Web 测试框架,请创建 Windows 窗体或 Windows Presentation Foundation (WPF) 应用程序并将页面加载到 WebBrowser 控件(Windows Forms VersionWPF version)中。您可以通过这种方式检查 DOM 并在页面上调用 JavaScript。可以在http://msdn.microsoft.com/en-us/library/3s8ys666.aspx 找到 Windows 窗体应用程序的示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多