最经看了一点关于TDD方面的文章.写个小示例.
新建一个类库项目,并添加对(
NUnit.Framework;)的引用(前提是你安装了NUnit),然后新建一个类测试用例类:
代码如下
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using NUnit.Framework;
5
6
namespace 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(5, 5));
24
Assert.AreEqual(7, tt.Add(3, 4));
25
}
26
[Test]
27
public void testSub()
28
{
29
Assert.AreEqual(5, tt.Sub(10, 5));
30
Assert.AreEqual(4, tt.Sub(7, 3));
31
}
32
[Test]
33
public void testMul()
34
{
35
Assert.AreEqual(9, tt.Mul(3, 3));
36
}
37
[Test]
38
public void testDiv()
39
{
40
Assert.AreEqual(1, tt.Div(1, 1));
41
Assert.AreEqual(2, tt.Div(10, 5));
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方法中要满足除数为零的情况.于是修改测试用例为:
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using NUnit.Framework;
5
6
namespace 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(5, 5));
24
Assert.AreEqual(7, tt.Add(3, 4));
25
}
26
[Test]
27
public void testSub()
28
{
29
Assert.AreEqual(5, tt.Sub(10, 5));
30
Assert.AreEqual(4, tt.Sub(7, 3));
31
}
32
[Test]
33
public void testMul()
34
{
35
Assert.AreEqual(9, tt.Mul(3, 3));
36
}
37
[Test]
38
public void testDiv()
39
{
40
Assert.AreEqual(1, tt.Div(1, 1));
41
Assert.AreEqual(2, tt.Div(10, 5));
42
Assert.AreEqual(0, tt.Div(10, 0));
43
}
44
}
45
}
现在再修改我们的代码来满足新的测试用例:
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
5
namespace 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 == 0) return 0;
25
return a / b;
26
}
27
}
28
}
好了,现在我们的代码将完全满足我们的测试用例.
总结:TDD的循环式步骤:根据需求写测试用例--编写代码满足用例--根据需求更改测试用例--更改代码来使新的测试用例通过.
posted @ 2008-06-26 19:18
李晓强 阅读(155)
评论(0) 编辑 收藏 网摘