惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
M
MIT News - Artificial intelligence
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
F
Full Disclosure
G
Google Developers Blog
罗磊的独立博客
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
A
About on SuperTechFans
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
The Register - Security
The Register - Security
U
Unit 42
D
Docker
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
Google DeepMind News
Google DeepMind News

博客园 - YQM

C#静态构造函数 没有使用lock的Singleton How to serialize and deserialize using C# .NET - YQM Javascript调用web service 简单的英语不简单 我们应该怎样去学习和工作--写给自己 扩展方法 使用反射-动态创建对象及调用对象方法 使用XmlWriter对象 使用XmlReader类 - YQM 知道做什么而不是怎样做(摘抄) 生活15点,要记住! 设计模式之Command模式 使用javascript动态添加和删除table的行和列 Generate unique strings and numbers in C#(生成一个唯一的字符串和数值) Some notes Localization in ASP.NET 2.0 ASP.NET 2.0: Playing a bit with GridView "Sort Grouping" 通过TryParse来检验和转换数据类型
NUnit单元测试属性介绍
YQM · 2008-09-25 · via 博客园 - YQM

  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}