首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室软件测试频道
Google
首页 资讯动态 测试技术 测试工具 行业软件测试 测试管理 测试下载 经验分享 软件质量 其他技术 RSS订阅 博客 论坛
您现在的位置: 中国IT实验室 >> 软件测试 >> 测试技术 >> Web测试 >> 正文

用Web自动化测试框架WatiN进行TDD

        运行测试,又会出现红条了,测试失败。现在要考虑实现一个真正的在数据库中的查找功能,怎么开始做呢?当然还是由测试开始,有了上面的基础,现在写的测试跨库可以稍微大点:

          [TestFixture]
         public class CustomerDAOTests
         {
             [Test]
             public void ShouldFoundCustomerByID()
             {
                 string id = "ALFKI";
                 string comName = "Alfreds Futterkiste";
                 CustomerDAO customerDAO = new CustomerDAO();
                 Customer found = customerDAO.FindCustomerByID(id);
                 Assert.That(found, Is.Not.Null);
                 Assert.That(found.CustomerID, Is.EqualTo(id));
                 Assert.That(found.CompanyName, Is.EqualTo(comName));
                 id = "AROUT";
                 comName = "Around the Horn";
                 found = customerDAO.FindCustomerByID(id);
                 Assert.That(found, Is.Not.Null);
                 Assert.That(found.CustomerID, Is.EqualTo(id));
                 Assert.That(found.CompanyName, Is.EqualTo(comName));
             }
         }

        这段代码不能编译,因为并没有CustomerDAO这个类,所以得新增该类以及FindCustomerByID方法,而且上面的测试中已经包括了两个测试场景,现在可以直接写实现:

          public class CustomerDAO
         {
             public Customer FindCustomerByID(string id)
             {
                 using (NorthwindDataContext ctx = new NorthwindDataContext())
                 {
                     IQueryable<Customer> customers = ctx.Customers.Where(c => c.CustomerID == id);
                     if (customers.Count() > 0)
                         return customers.Single();
                     else
                         return null;
                 }
             }
         }

        运行一下该测试,通过!然后再将aspx.cs里面的代码进行改动使Web页面的测试通过

          void btn_find_customer_Click(object sender, EventArgs e)
         {
             string id = tb_customerID.Text;
             Customer c = customerDAO.FindCustomerByID(id);
             if (c == null)
                 return;
             lbl_customerID.Text = c.CustomerID;
             lbl_companyName.Text = c.CompanyName;
             pnl_customerInfo.Visible = true;
         }

        不错,现在第一部分功能已经完成了,所有测试已经通过了,这时候我们可以打开浏览器,试试查找Customer的功能。

        回头看看刚才写的测试代码,有很多重复的地方,这是不好的,需要进行重构。这里也就不列出重构代码了。

        到我们实现第二部分的时候了,列出该用户相关的所有Order。在这里也不再详细些步骤了,就放出测试代码,实现的话还是很容易的 :) 当然测试并不完全,需要更加完善。

        web页面测试代码:

          [Test]
         public void ShouldFindOrders()
         {
             string id = "ALFKI";
             ie.TextField(Find.ById("tb_customerID")).TypeText(id);
             ie.Button(Find.ById("btn_find_customer")).Click();
             ie.Button(Find.ById("btn_find_orders")).Click();
             Table ordersTable = ie.Table(Find.ById("grdv_orders"));
             Assert.That(ordersTable, Is.Not.Null);
             Assert.That(ordersTable.TableRows.Length, Is.EqualTo(6 + 1));
         }

        DAO测试代码:

         [TestFixture]
         public class OrderDAOTests
         {
             [Test]
             public void ShouldFindOrdersByCustomerID()
             {
                 string id = "ALFKI";
                 OrderDAO orderDAO = new OrderDAO();
                 List<Order> orders = orderDAO.FindOrdersByCustomerID(id);
                 Assert.That(orders.Count, Is.EqualTo(6));
             }
         }

上一页  [1] [2] 

【责编:michael】

中国IT教育

相关产品和培训
文章评论
 专题推荐

 ·建立可全面监控Squid代理服务器
 ·华为认证题库、模拟器下载专题
 ·嵌入式操作系统Linux资料下载(A)
 ·JAVA的应用编程接口——JAVA API详解…
 ·Linux Shell学习技术专题[上]…
 ·windows Server 2008专区…
 ·WEB开发ASP.NET和PHP、JSP究竟学哪个
 ·五步带你入门XML
 ·零距离接触OCP_Oracle认证体系全攻略
 ·揭秘:网络工程师职业发展路线图
 最近更新
 博客论点
 频道精选
 软件测试频道导航