NUnit简短使用说明

本文深入探讨了单元测试框架中的关键概念,包括FixtureAttribute、SetUp、TearDown、TestAttribute及其使用方法,同时介绍了如何利用ExpectedExceptionAttribute来测试异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

namespaceUnitTestingExamples
{

usingSystem;
usingNUnit.Framework;

///<summary>
///TestFixtureattribute主要是用在class上,其作用是标志该class含有需要执行的testmethods。
///当你在一个class的定义里加上这个attribute,TestRunner就会检查该class,看看这个class是否含有
///testmethods
///</summary>

[TestFixture]
publicclassSomeTests
{
///<summary>
///这两个主要用在TestFixture里面,其作用是提供一组函数执行任何测试运行之前(TestFixtureSetUP)和
///最后一个测试执行后(TestFixtureTearDown)。每一个TestFixture只能有一个TestFixtureSetUp方法和
///TestFixtureTearDown方法。如果一个以上的TestFixtureSetUp和TestFixtureTearDown方法,
///可以通过编译但是不会执行。注意一个TestFixture可以拥有一个TestFixtureSetUp和一个SetUp,
///也可以拥有一个TestFixtureTearDown和一个TearDown方法。
///TestFixtureSetUp和TestFixtureTearDown被用在不方便使用SetUp和TearDown方法。
///一般情况使用SetUp和TearDownattributes。
///</summary>

[TestFixtureSetUp]
publicvoidRunBeforeAllTests()

{

Console.WriteLine(
"TestFixtureSetUp");

}


[TestFixtureTearDown]

publicvoidRunAfterAllTests()

{

Console.WriteLine(
"TestFixtureTearDown");

}


[SetUp]

publicvoidRunBeforeEachTest()

{

Console.WriteLine(
"SetUp");

}


[TearDown]

publicvoidRunAfterEachTest()

{

Console.WriteLine(
"TearDown");

}



///<summary>
///Testattribute主要用来标示在textfixture中的method,表示这个method需要被TestRunnerapplication
///所执行。有Testattribute的method必须是public的,并且必须returnvoid,也没有任何传入的参数。
///如果没有符合这些规定,在TestRunnerGUI之中是不会列出这个method的,而且在执行UnitTest的时候也不
///会执行这个method。上面的程序代码示范了使用这个attribute的方法。
///</summary>

[Test]
publicvoidTest1()

{

Console.WriteLine(
"Test1");

}


///<summary>
///有的时候,你希望你的程序在某些特殊的条件下会产生一些特定的exception。要用UnitTest来测试程序是
///否如预期的产生exception,你可以用一个try..catch的程序区段来catch(捕捉)这个exception,然后再设一
///个boolean的值来证明exception的确发生了。这个方法固然可行,但是太花费功夫。事实上,你应该使用这
///个ExpectedExceptionattribute来标示某个method应该产生哪一个exception
///</summary>

[Test]

[ExpectedException(
typeof(InvalidOperationException))]
publicvoidTest2()
{
//DosomethingthatthrowsanInvalidOperationException
}


///<summary>
///这个attribute你大概不会经常用的,但是一旦需要的时候,这个attribute是很方便使用的。你可以使用这个
///attribute来标示某个testmethod,叫TestRunner在执行的时候,略过这个method不要执行。
///</summary>

[Test]
[Ignore(
"We'reskippingthisonefornow.")]
publicvoidTestOne()
{
//Dosomething
}




}


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值