NUnit TDD
最经看了一点关于TDD方面的文章.写个小示例.
新建一个类库项目,并添加对(NUnit.Framework;)的引用(前提是你安装了NUnit),然后新建一个类测试用例类:
代码如下
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方法中要满足除数为零的情况.于是修改测试用例为:
现在再修改我们的代码来满足新的测试用例:
总结: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;2
using System.Collections.Generic;3
using System.Text;4
using NUnit.Framework;5

6
namespace TDDDemo7
{8
[TestFixture] // 声明该类为一个测试实体9
public class TestNetShop10
{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
}
using System;2
using System.Collections.Generic;3
using System.Text;4
using NUnit.Framework;5

6
namespace TDDDemo7
{8
[TestFixture] // 声明该类为一个测试实体9
public class TestNetShop10
{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
}
好了,现在我们的代码将完全满足我们的测试用例.
using System;2
using System.Collections.Generic;3
using System.Text;4

5
namespace TDDDemo6
{7
public class NetShop8
{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的循环式步骤:根据需求写测试用例--编写代码满足用例--根据需求更改测试用例--更改代码来使新的测试用例通过.



浙公网安备 33010602011771号