NUnit的测试方法与VS中启用它来调试

来源:互联网 发布:数控铣床编程100例 编辑:程序博客网 时间:2024/06/06 01:16

VS中加入单元测试框架:

右键项目“属性“来到“调试”

启动操作,选择“启动外部程序”选择NUnit程序

C:\Program Files\NUnit 2.5.9\bin\net-2.0\nunit.exe

这样就可以在生成的时候,自动启用NUnit进行调试

 

 

Not a Test Assembly

The assembly was not built with any known testing framework

 

出现上述这种错误,确认有没有加载using NUnit.Framework;

 

using NUnit.Framework;

namespace NUnitTest

{

    [TestFixture]

    public class Class1

    {

        [Test]

        public void Add()

        {

            int a = 1;

            int b = 2;

            int sum = a + b;

            Assert.AreEqual(sum, 3);

        }

    }

}

标识类的特性为TestFixture,以及方法的特性标识为Test这样就可以测试了,其中Assert是进行测验的一个类,里面有许多的静态方法。

当然不标识类的特性也可以测试,不标识方法的特性,调试的时候就不出现。

 

测试的效果图:

如果把上面重复的公用,怎么做呢,如下:

private int a;

private int b;

[SetUp]

public void InitializeOperands()

{

a = 1;

b = 2;

}

使用SetUp来标识即可。

如果想忽略这个方法

添加[Ignore]特性,这个方法还是会显示,只是会忽略测试,进度条是黄色的。

 

其他的一些方法

TestFixtureSetUp打开数据库连接,数据共享

TestFixtureTearDown关闭数据库连接数据共享

SetUpTearDown

[Category("加法")]把一些方法分组。

异常的捕获

[ExpectedException(typeof(DivideByZeroException))]

        public void DivideByZero()

        {

            int zero = 0;

            int result = a / zero;

            Assert.Fail("Exception");

        }

如果存在异常就通过,所以上面这个通过测试。

如果修改为[ExpectedException(typeof(InvalidOperationException))]

那么就会报错,尝试除以0,这是不允许的。

 

 

好了,综合演示一下

namespace NUnitTest

{

    [TestFixture]

    public class Class1

    {

        [TestFixtureSetUp]

        public void FixtureSetUp()

        {

            Console.Out.WriteLine("FixtureSetUp");

        }

        [TestFixtureTearDown]

        public void FixtureTearDown()

        {

            Console.Out.WriteLine("FixtureTearDown");

        }

        [SetUp]

        public void SetUp()

        {

            Console.Out.WriteLine("SetUp");

        }

        [TearDown]

        public void TearDown()

        {

            Console.Out.WriteLine("TearDown");

        }

        [Test]

        public void Test1()

        {

            Console.Out.WriteLine("Test 1");

        }

        [Test]

        public void Test2()

        {

            Console.Out.WriteLine("Test 2");

        }

    }

}

 

运行结果:

FixtureSetUp

***** NUnitTest.Class1.Test1

SetUp

Test 1

TearDown

***** NUnitTest.Class1.Test2

SetUp

Test 2

TearDown

FixtureTearDown

原创粉丝点击