使用更多属性 using System; using System.Collections.Generic; using System.Linq; using System.Text; using NUnit.Framework; using BasicSynx; namespace NunitQuickStart { //作为一个测试的类,必须满足:1.必须是public 2.必须有一个缺省构造函数 3.构造函数没有副作用 /// <summary> /// 使用TestFixture标记类,使用Test标记方法 /// </summary> [TestFixture] //标记一个类包含测试 public class NumberFixture { //作为测试的方法,必须满足:1.必须是public 2.不能有参数 3.没有返回值 [Test] //标记一个类的某个方法是可以测试的 public void AddTwoNumbers() { int a = 3; int b = 5; int sum = a + b; Assert.AreEqual(sum, 8); } [Test] public void MultiplyTwoNumbers() { int a = 3; int b = 5; int multiply = a * b; Assert.AreEqual(multiply, 15); } } /// <summary> /// 使用SetUp提取共用方法,Ignore忽略方法,ExpectedException预期的异常类型,Category用于Nunit分类 /// </summary> [TestFixture] public class NumberFixture2 { private int a; private int b; [SetUp] //SetUp初始化,TearDown释放资源 public void InitOperate() { a = 3; b = 5; } [Test] [Category("Number")] public void AddTwoNumbers() { int sum = a + b; Assert.AreEqual(sum, 8); } [Test] [Category("Ignore")] [Ignore("Multiplication is ignored, can't be excuted forever!")] //忽略当前运行方法,当一些代码还没完成不想参与测试,若Ignore加在类上,则忽略该类下的所有方法 public void MultiplyTwoNumbers() { int multiply = a * b; Assert.AreEqual(multiply, 15); Console.WriteLine("Igonred method"); } [Test] [Explicit("当使用Ignore时方法被忽略则无法被调用执行,但是又有可能要调用,使用Explicit可以允许显示调用")] [Category("Exception")] [ExpectedException(typeof(DivideByZeroException))] //捕捉预期的异常类型,经常用于验证边界条件。若发生了预期的异常类型则测试通过 public void DivideByZero() { int zero = 0; int infinity = a / zero; Assert.Fail("Should have gotten an exception"); } /// <summary> /// 测试值类型,引用类型 /// </summary> [Test] public void RefValType() { TestValRefType vrType = new TestValRefType(); int rtnValue = vrType.testType(); Assert.AreEqual(rtnValue, 10); } } } 运行效果: 图1 图2