WebForm的NUnit测试用例

时间:2012-09-07 22:44:42

标签: c# asp.net nunit

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

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

请建议如何为此网络表格编写NUnit测试用例

例如,如果有一个计算阶乘的方法,我首先使用代码中给出的参数调用该方法(例如:4)。它让我回归4!变成一个变量'result'(结果现在有24个)。 然后我将调用AssertEquals(24,结果)

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

谢谢,

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分: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);
  }

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

希望这有帮助