zoukankan      html  css  js  c++  java
  • 测试驱动开发实践入门篇

    这个示例所使用的测试框架为NUnit,大家可以到http://www.nunit.org/下载该工具

    测试项目中需要引用NUnit中的nunit.framework.dll

    如何使用NUnit可以看这篇文章 一步一步学NUnit

     我们就以一个简单的需求开始吧。
    需求
    员工登陆系统,输入登陆名密码,系统返回是否登陆成功
    我们首先先对这个需求写测试用例

     1[TestFixture]
     2public class EmployeeTest
     3{
     4    [Test]
     5    public void LoginTest()
     6    {
     7        Employee em = new Employee();
     8        Assert.IsTrue(em.Login("admin""admin"), "用户登陆测试失败");
     9    }

    10}

    这样的代码在这里是编译不通过的,我们首先要去创建一个Employee类,并创建Login(string loginName,string password)方法

     1/// <summary>
     2/// 员工类
     3/// </summary>

     4public class Employee
     5{
     6    /// <summary>
     7    /// 员工登陆
     8    /// </summary>
     9    /// <param name="loginName">登陆名</param>
    10    /// <param name="password">密码</param>
    11    /// <returns></returns>

    12    public bool Login(string loginName, string password)
    13    {
    14        return false;
    15    }

    16}

     然后我们编译通过,但是测试亮红灯,测试失败,接下来我们实现这个方法

     1/// <summary>
     2/// 员工类
     3/// </summary>

     4public class Employee
     5{
     6    /// <summary>
     7    /// 员工登陆
     8    /// </summary>
     9    /// <param name="loginName">登陆名</param>
    10    /// <param name="password">密码</param>
    11    /// <returns></returns>

    12    public bool Login(string loginName, string password)
    13    {
    14        if (loginName == "admin" && password == "admin")
    15        {
    16            return true;
    17        }

    18        return false;
    19    }

    20}

    然后我们再进行测试,通过
    到这里我们基本功能已经测试成功了,但是这里还有我们还需要增加对用户名为空的验证,我们还是和上面一样先写一个测试用例

    1[Test]
    2[ExpectedException(typeof(ArgumentException),ExpectedMessage="登陆名不能为空", UserMessage="用户验证测试失败")]
    3public void ValidateLoginName()
    4{
    5    Employee em = new Employee();
    6    em.Login(nullnull);
    7}

    这个代码在这里测试还是不通过的,因为我们没有实现,接下来我们实现这个判断,代码最后修改如下

     1/// <summary>
     2/// 员工登陆
     3/// </summary>
     4/// <param name="loginName">登陆名</param>
     5/// <param name="password">密码</param>
     6/// <returns></returns>

     7public bool Login(string loginName, string password)
     8{
     9    if (string.IsNullOrEmpty(loginName))
    10    {
    11        throw new ArgumentException("登陆名不能为空");
    12    }

    13    if (loginName == "admin" && password == "admin")
    14    {
    15        return true;
    16    }

    17    return false;
    18}

    然后我们在nunit工具中测试一下,都是绿灯了
    基本功能我们完成了,在下一节中我们将讲解如何对这个代码进行重构,尽请期待。。。

  • 相关阅读:
    window常见事件onload
    BOM顶级对象window
    模拟京东快递单号查询案例
    [Hibernate] one-to-one
    Katy Perry
    [Java] int 转换为BigDecimal
    [easyUI] datagrid 数据格 可以进行分页
    [easyUI] 树形菜单 tree
    [easyUI] lazyload 懒加载
    [easyUI] autocomplete 简单自动完成以及ajax从服务器端完成
  • 原文地址:https://www.cnblogs.com/luluping/p/1506431.html
Copyright © 2011-2022 走看看