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
}



}

}










































































































