1.TestFixture
标记包含测试的类。该类的特征:(1)必须是public,否则NUnit找不到它;(2)必须有缺省的构造函数,否则NUnit不会构造它;(3)构造函数没有任何副作用,因为NUnit经常多次构造它。
[TestFixture]
public class Tests
{
}
2.Test
标记测试函数。该函数的特征:1)必须是public;(2)没有参数;(3)没有返回值。
[TestFixture]
public class Tests
{
[Test]
public void AddTwoNum()
{
int a = 1;
int b = 2;
int result= a + b;
Assert.AreEqual(result, 3);
}
}
3.SetUp
标记函数,该函数在每个测试函数执行之前都要执行。一般是资源初始化函数。
4.TearDown
标记函数,该函数在每个测试函数执行之后都要执行。一般是资源清除函数。
[TestFixture]
public class Tests
{
private int a;
private int b;
private int result;
[SetUp]
public void Init()
{
a = 1;
b = 2;
}
[Test]
public void AddTwoNum()
{
result = a + b;
Assert.AreEqual(result, 3);
}
[Test]
public void MultiplyTwoNum()
{
result = a * b;
Assert.AreEqual(result, 2);
}
[TearDown]
public void Clear()
{
result = 0;
}
}
5.ExpectedException
期望在运行时抛出一个期望的异常,如果是,则测试通过,否则不通过。如除0时会抛出异常。
[Test]
[ExpectedException(typeof(DivideByZeroException))]
public void DivideByZero()
{
int zero = 0;
int infinity = a/zero;
Assert.Fail("Should have gotten an exception");
}
6.Ignore
运行时忽略的测试。Ignore属性可以附加到测试方法,也可以附加到整个测试类
[Test]
[Ignore("Method is ignored")]
public void MultiplyTwoNum()
{
result = a * b;
Assert.AreEqual(result, 2);
}
7.Category
将测试分类,便于按类别运行测试。
[Test]
[Category("Calculator")]
public void MultiplyTwoNum()
{
result = a * b;
Assert.AreEqual(result, 2);
}
8.Explicit
忽略一个测试类或测试方法,直到它们显式的选择执行。
[Test, Explicit]
public void MultiplyTwoNum()
{
result = a * b;
Assert.AreEqual(result, 2);
}
9.TestCase
标记有参数的测试方法。下例中1,2分别为参数a和b的值。
[TestCase(1,2)]
public void AddTwoNum(int a, int b)
{
int result = a + b;
Assert.AreEqual(result, 3);
}
10.Maxtime
标记测试用例的最大执行时间,超时时报错但不取消测试。
[Test]
[MaxTime(100)]
public void AddTwoNum()
{
int a = 1;
int b = 2;
int result = a + b;
Assert.AreEqual(result, 3);
}
11.Timeout
标记测试用例的超时时间,超时中断测试。
[Test]
[Timeout(100)]
public void AddTwoNum()
{
int a = 1;
int b = 2;
int result = a + b;
Assert.AreEqual(result, 3);
}
12.Repeat
标记测试方法重复执行的次数。
[Test,Repeat(5)]
public void AddTwoNum()
{
int a = 1;
int b = 2;
int result = a + b;
Assert.AreEqual(result, 3);
}