WebForm的NUnit测试用例



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

web表单有4个文本框(姓名、电子邮件地址、密码、电话号码),收音机列表,下拉列表(性别)。表单只是验证数据,并将其他页面中的数据显示为输出文本(标签)。验证只是针对电子邮件、电话的regEx验证。name和pwd的长度验证。required性别现场验证。

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

例如,如果有一个计算阶乘的方法,我首先用代码中给定的参数调用该方法(例如:4)。它还给我4!转换为变量"result"(即result现在有24)。然后我将调用AssertEquals(24,result)

所以,在web表单的情况下,它需要用户的输入。代码中未给出输入。AssertEquals 的参数是什么

谢谢,

最终你能做的(根据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);
  }

请记住,在单元测试中,您只是在测试不同的逻辑流。你不必测试任何输入,所以在这里我测试了一个给定坏电子邮件地址的错误验证和一个好电子邮件地址的真实验证。

希望这能帮助

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

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

最新更新