3

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

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

请建议我如何为此 Web 表单编写 NUnit 测试用例

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

因此,在 Web 表单的情况下,它需要用户输入。代码中没有给出输入。AssertEquals 的参数是什么

谢谢,

4

3 回答 3

0

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

于 2012-09-08T01:01:35.057 回答
0

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

于 2012-09-08T05:49:55.113 回答
0

最终,您可以做的(根据 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);
  }

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

希望这可以帮助

于 2012-09-08T12:13:13.617 回答