用NUnit为.NET程序做测试 --- 实战

在前面我们学习了NUnit的常见属性和他的使用方法。下面我们就来简单的练习练习吧。

以下我们来写一个 简单的冒泡排序 来实战吧。

 

Calculate类中添加一个冒泡排序方法吧。

public int [] BubbleSort (int [] array)
{
    for (int i = 0; i < array.Length -1 ; i++)
    {
        for (int j = 0 ; j < array.Length- i -1 ; j++)
        {
            if (array[j] > array[j + 1])
            {
                int temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
            
        } 
    }
    return array;
}

CalculateTest中添加测试方法,如下。

如果在此我们只想运行这一个测试方法的话,那么我们前面学习到的Ignore explicit Category等属性就用上了吧。

[Test]
public void TestBubbleSort()
{
    int[] array = {-1,4,2,8,54};

    int[] result = cal.BubbleSort(array);

    int[] expect = {-1,2,4,8,54};

    Assert.AreEqual(expect, result);
}

运行NUnit,运行。

1

CalculateTest中添加测试方法

[Test]
public void TestBubbleSort2()
{
    int[] array = null;

    int[] result = cal.BubbleSort(array);
}

运行NUnit

2

显然,我们没有考虑到传入的参数是NULL的情况了。既然这样那就在完善下BubbleSort()吧:

public int [] BubbleSort (int [] array)
{
    if (array ==null)
    {
        Console.Error.WriteLine("参数array不能为NULL");
        return new int[] { };
    }
    for (int i = 0; i < array.Length -1 ; i++)
    {
        for (int j = 0 ; j < array.Length- i -1 ; j++)
        {
            if (array[j] > array[j + 1])
            {
                int temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
            
        } 
    }
    return array;
}

我们为BubbleSort 方法添加了对参数的不为NULL判断,如果传入的参数为NULL,那么将会给出 "参数array不能为NULL”的提示了

3

 

我们在上面验证了参数为int[]数组时和参数为NULL的情况。但是还有一种情况:那就是数组为空的时候。

[Test]
public void TestBubbleSort3()
{
    int[] array = {};

    int[] result = cal.BubbleSort(array);

    int[] expect = { };

    Assert.AreEqual(expect, result);
}

运行NUnit,

4

 

看到这个环保的绿色真是好哇。呵呵

 

最后的冒泡排序的代码如下:添加了一个是否调换位置的判断:

public int [] BubbleSort (int [] array)
{
    if (array ==null)
    {
        Console.Error.WriteLine("参数array不能为NULL");
        return new int[] { };
    }
    for (int i = 0; i < array.Length -1 ; i++)
    {
        bool isWap = false;
        for (int j = 0 ; j < array.Length- i -1 ; j++)
        {
            if (array[j] > array[j + 1])
            {
                int temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
                isWap = true;
            }                    
        }

        if (!isWap)
        {
            return array;
        }
    }
    return array;
}

你可能感兴趣的:(学习测试,测试,.net,null)