yqm的.net之园

writing down what i am experiencing or creating
NUnit单元测试属性介绍
  1using System;
  2using System.Collections.Generic;
  3using System.Linq;
  4using System.Text;
  5using NUnit.Framework;
  6using System.Diagnostics;
  7using System.Threading;
  8
  9namespace Test
 10{
 11    /// <summary>
 12    /// TestFixture属性标记表示该类是一个带有测试方法的类,注意:
 13    /// 该类的访问修饰符必须是public
 14    /// </summary>

 15    [TestFixture]
 16    public class TestClass
 17    {
 18
 19        private string dateTime = DateTime.Now.ToString();
 20        private string dateTime2 = DateTime.Now.ToString();
 21        /// <summary>
 22        /// 构造函数
 23        /// </summary>

 24        public TestClass() { }
 25
 26        /// <summary>
 27        /// SetUp属性用来修饰方法,修饰后这个方法在每个测试方法被调用之前运行,
 28        /// 我们可以用它来初始化设置一些变量,在每个测试方法运行之前赋值。
 29        /// </summary>

 30        [SetUp]
 31        public void Init()
 32        {
 33            Thread.Sleep(3000);
 34            dateTime2 = DateTime.Now.ToString();
 35        }

 36
 37        /// <summary>
 38        /// Test属性标记类的某一方法为一个测试方法,注意点有:
 39        /// 注意一:此方法所在类是一个标记为TestFixture的类
 40        /// 注意二:该方法必须是public修饰
 41        /// 注意三:该方法没有任何参数,也不返回任何值
 42        /// </summary>

 43        [Test]
 44        public void Test()
 45        {
 46            Debug.WriteLine(string.Format("dateTime1:{0}, dateTime2:{1}", dateTime, dateTime2));
 47        }

 48
 49        /// <summary>
 50        /// ExpectedException属性表明这个方法会抛出一个预期的异常,
 51        /// exceptType参数为期望的异常的精确类型,也可以直接用字符串exceptionName作为参数
 52        /// 当抛出预期异常是测试通过,否则测试不通过。
 53        /// </summary>

 54        [Test]
 55        //[ExpectedException(typeof(DivideByZeroException))]
 56        [ExpectedException("System.DivideByZeroException")]
 57        public void DivideByZero()
 58        {
 59            int zero = 0;
 60            int i = 100;
 61            int infinity = i / zero;
 62            Assert.Fail("Should have gotten an exception");
 63        }

 64
 65        /// <summary>
 66        /// Ignore表示忽略测试该方法
 67        /// 运行测试时会返回:
 68        /// TestCase 'Test.TestClass.MultiplyTwoNumbers' not executed: 
 69        /// Multiplication is ignoredTestCase 
 70        /// 'Test.TestClass.MultiplyTwoNumbers' not executed: 
 71        /// Multiplication is ignored
 72        /// </summary>

 73        [Test]
 74        [Ignore("Multiplication is ignored")]
 75        public void MultiplyTwoNumbers()
 76        {
 77            decimal amount = 100 * 1.25M;
 78            Assert.AreEqual(2, amount);
 79        }

 80
 81        /// <summary>
 82        /// TearDown属性用来修饰方法,说明这个方法是在每个测试方法被调用完之后运行的,
 83        /// 我们可以用来释放一些暂存的变量。
 84        /// </summary>

 85        [TearDown]
 86        public void Dispose()
 87        {
 88            //释放一些暂存的变量
 89        }

 90    }

 91
 92
 93    /// <summary>
 94    /// SetUpFixture属性用来修饰类,使用这个属性,在其命名空间下,
 95    /// 运行测试则首先运行该类中SetUpAttribute修饰的方法,在运行测
 96    /// 试结束则运行该类中TearDownAttribute修饰的方法,注意:
 97    /// 一个命名空间下只能有一个SetUpFixtureAttribute修饰的类。
 98    /// 类的访问修饰符必须是public
 99    /// </summary>

100    [SetUpFixture]
101    public class MyClassSetup
102    {
103        /// <summary>
104        /// 构造函数
105        /// </summary>

106        public MyClassSetup() { }
107
108        /// <summary>
109        /// 
110        /// </summary>

111        [SetUp]
112        public void SetupMethod()
113        {
114            //
115        }

116
117        [TearDown]
118        public void TearDownMethod()
119        {
120            //
121        }

122    }

123}

posted on 2008-09-25 16:24  YQM  阅读(288)  评论(0编辑  收藏  举报