您的位置:首页 > 其它

NUnit的使用(3)——更多的测试用例

2008-07-27 10:15 183 查看
实际的测试用例并不只一两个,根据单元测试策略,可以使用等价类、边界值等测试用例分类法进行划分。

仍以比较list列表中最大整数值为例,我们可以对测试数据进行如下等价类划分:

第一类:数可以是整数、小数。在本例中,如果list列表若含有小数应该报错并人为抛出异常。

第二类:数可以分为正、负、零。

第三类:数可以分为一位数、两位数、三位数……

第四类:list列表中可以有重复的值,重复值不应该影响最大数的判定

第五类:list列表中的值顺序不应该影响最大数的判定

第六类:list列表中可能不含任何整数,即为空。

测试数据必须讨论边界值,因为实践证明边界处是bug的多发地

第一类:数为0,-1,1,Int.MaxValue-1,Int.MinValue+1

第二类:list列表中有零个数、一个数

根据上述分析,我们可以得到许多测试用例,下面选取其中几个对LargestNumber.cs测试。
using System;
using System.Collections.Generic;
using System.Text;

using NUnit.Framework;

namespace CompareMaxNumber
{
[TestFixture]
class TestLargestNumber
{
[Test]
public void TestLargestSequense()
{
Assert.AreEqual(9,LargestNumber.MaxNumber(new int[] {8, 7, 9}));
Assert.AreEqual(9, LargestNumber.MaxNumber(new int[] { 7, 8, 9 }));
Assert.AreEqual(9, LargestNumber.MaxNumber(new int[] { 9, 8, 7 }));
}
[Test]
public void TestLargestnegative()
{
Assert.AreEqual(-7, LargestNumber.MaxNumber(new int[] { -9, -7, -8 }));
}
[Test,ExpectedException(typeof(ArgumentException))]
public void TestLargestSmallNumber()
{
Assert.AreEqual(1, LargestNumber.MaxNumber(new int[] { 1 }));
LargestNumber.MaxNumber(new int[] { });
Assert.AreEqual(0, LargestNumber.MaxNumber(new int[] { 0 }));
}

[Test]
public void TestLargestRepetition()
{
Assert.AreEqual(9, LargestNumber.MaxNumber(new int[] { 9, 3, 5, 9 }));
}
}
}[code]

启动调试,点击run得到的测试结果如下:



测试没有通过!这是因为程序没有对list列表为空作判断。当list.Length为0时,应该抛出异常。我们在LargestNumber.cs中加上如下代码,再次运行nunit.exe,测试通过。

if (list.Length == 0)
{
throw new ArgumentException("Empty list");
}[code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: