NUnit TDD

    最经看了一点关于TDD方面的文章.写个小示例.
    新建一个类库项目,并添加对(NUnit.Framework;)的引用(前提是你安装了NUnit),然后新建一个类测试用例类:
代码如下
    
 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4using NUnit.Framework;
 5
 6namespace TDDDemo
 7{
 8    [TestFixture] // 声明该类为一个测试实体
 9    public class TestNetShop
10    {
11        public TestNetShop()
12        { }
13        private NetShop tt;
14        [SetUp] // TDD 默认初始化属性
15        public void SetUp()
16        {
17            tt = new NetShop();
18        }

19        // 测试加法
20        [Test]
21        public void testAdd()
22        {
23            Assert.AreEqual(10, tt.Add(55));
24            Assert.AreEqual(7, tt.Add(34));
25        }

26        [Test]
27        public void testSub()
28        {
29            Assert.AreEqual(5, tt.Sub(105));
30            Assert.AreEqual(4, tt.Sub(73));
31        }

32        [Test]
33        public void testMul()
34        {
35            Assert.AreEqual(9, tt.Mul(33));
36        }

37        [Test]
38        public void testDiv()
39        {
40            Assert.AreEqual(1, tt.Div(11));
41            Assert.AreEqual(2, tt.Div(105));
42        }

43    }

44}
     这时点击生成肯定是不行的,因为我没只有测试用例,还没有实现这个用例,下面我们用最少的代买来使上面的用例通过测试:
using System;
using System.Collections.Generic;
using System.Text;

namespace TDDDemo
{
    
public class NetShop
    
{
        
public NetShop() { }
        
public int Add(int a, int b)
        
{
            
return a + b;
        }

        
public int Sub(int a, int b)
        
{
            
return a - b;
        }

        
public int Mul(int a, int b)
        
{
            
return a * b;
        }

        
public int Div(int a, int b)
        
{
            
return a / b;
        }

    }

}


好的现在我们可以生成.
打开NUnit装载我们刚才的类库项目生成的dll文件(debug或者release目录下面)
然后运行测试,
很好测试成功(一片绿色呵呵)

:现在我们发现需要更改测试用例来满足需求,比如说在TestDiv方法中要满足除数为零的情况.于是修改测试用例为:
 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4using NUnit.Framework;
 5
 6namespace TDDDemo
 7{
 8    [TestFixture] // 声明该类为一个测试实体
 9    public class TestNetShop
10    {
11        public TestNetShop()
12        { }
13        private NetShop tt;
14        [SetUp] // TDD 默认初始化属性
15        public void SetUp()
16        {
17            tt = new NetShop();
18        }

19        // 测试加法
20        [Test]
21        public void testAdd()
22        {
23            Assert.AreEqual(10, tt.Add(55));
24            Assert.AreEqual(7, tt.Add(34));
25        }

26        [Test]
27        public void testSub()
28        {
29            Assert.AreEqual(5, tt.Sub(105));
30            Assert.AreEqual(4, tt.Sub(73));
31        }

32        [Test]
33        public void testMul()
34        {
35            Assert.AreEqual(9, tt.Mul(33));
36        }

37        [Test]
38        public void testDiv()
39        {
40            Assert.AreEqual(1, tt.Div(11));
41            Assert.AreEqual(2, tt.Div(105));
42            Assert.AreEqual(0, tt.Div(100));
43        }

44    }

45}

现在再修改我们的代码来满足新的测试用例:

 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4
 5namespace TDDDemo
 6{
 7    public class NetShop
 8    {
 9        public NetShop() { }
10        public int Add(int a, int b)
11        {
12            return a + b;
13        }

14        public int Sub(int a, int b)
15        {
16            return a - b;
17        }

18        public int Mul(int a, int b)
19        {
20            return a * b;
21        }

22        public int Div(int a, int b)
23        {
24            if (b == 0return 0;
25            return a / b;
26        }

27    }

28}
好了,现在我们的代码将完全满足我们的测试用例.
总结:TDD的循环式步骤:根据需求写测试用例--编写代码满足用例--根据需求更改测试用例--更改代码来使新的测试用例通过.
posted @ 2008-06-26 19:18  ~洛书~  阅读(532)  评论(0编辑  收藏  举报