最最基本的最最重要的:
1. 两个属性
TestFixtureAttribute
本属性标记一个类包含测试。做为一个测试的类,这个类还有一些限制:必须是Public,否则NUnit看不到它的存在;它必须有一个缺省的构造函数,否则是NUnit不会构造它。
TestAttribute
Test属性用来标记一个类(已经标记为TestFixture)的某个方法是可以测试的. 对测试方法的要求:1)没有参数;2)没有返回值;3)public
2. NUint中Per-method :Setup与Teardown
[SetUp] //用于测试环境的建立
public void MySetup() {
//do something.
}
[TearDown] //清除测试环境
public void MyTeardown() {
//do something.
}
在每个[Test]方法之前,都会调用[SetUp]方法;并在每个[Test]方法完成之后,都会调用[TearDown]方法。public void MySetup() {
//do something.
}
[TearDown] //清除测试环境
public void MyTeardown() {
//do something.
}
3. NUint中的Per-class:TestFixtureSetUp和TestFixtureTearDown
这两个方法对整个Test Class设置一些环境,及所有测试方法都执行完后做一些清理工作。
当第一个[Test]方法运行前,会调用[TestFixtureSetUp]方法,当所有[Test]方法都执行后,会调用[TestFixtureTearDown]方法。
4. 测试预期的异常
//如测试是否抛出ArgumentException
[Test, ExpectedException(typeof(ArgumentException))]
public void TestForException()
{
Do.GetSomething(null);
//Shouldn's get to here;
}
[Test, ExpectedException(typeof(ArgumentException))]
public void TestForException()
{
Do.GetSomething(null);
//Shouldn's get to here;
}
若测试方法预期地抛出ArgumentException异常,测试将会通过;若没有抛出异常,则测试将会失败。
一旦异常抛出了,测试方法中剩余的代码都不会被执行。
关于单元测试:
1. 每个测试的运行都应该是互相独立的;可在任何时候,任意顺序运行每个单独的测试。
2. solution有很多个工程时,专门新增加一些工程,用于写单元测试,比如有一个ClassLibrary3工程,则建一个TestForClassLibrary3工程,单元测试类放到这个工程中去。
由于是以工程为单位,所以部署起来很容易,只要把这几个工程去掉就可以了,将来再要用,也只要加上就可以了。