1 准备TestDriven和NUnit 我们可以针对整个测试文件和单个函数进行测试,非常方便。下面主要谈谈TestDriven支持的属性和参数。
using
NUnit.Framework;
2.1 [TestFixture] 属性
[TestFixture] // 这个类是一个用来执行单元测试的类 public class TestSimpleCalculator { // something } 2.2 [TestFixtureSetUp] 属性
[TestFixture] public class UnitTestDemo { SimpleCalculator myMath; // 在所有测试方法运行之前运行 [TestFixtureSetUp] public void InitFixture() { myMath = new SimpleCalculator(); } } 2.3 [TestFixtureTearDown] 属性
[TestFixture] public class UnitTestDemo { SimpleCalculator myMath; // 在所有测试方法运行完之后运行 [TestFixtureTearDown] public void InitFixture() { // 释放一些资源 myMath.Dispose(); } } 2.4 [SetUp]属性
[TestFixture] public class TestSimpleCalculator { SimpleCalculator myMath; private double a; private double b; // 在任何一个测试方法运行之前运行,可以用来重置一些变量 [SetUp] public void Init() { a = 3.0 ; b = 5.0 ; } } 2.5 [TearDown]属性
[TestFixture] public class TestSimpleCalculator { SimpleCalculator myMath; StringBuilder sb; [TestFixtureSetUp] public void InitFixture() { myMath = new SimpleCalculator(); sb = new StringBuilder(); } // 在每一个测试方法运行完了之后都会运行,可以用来清理一些暂存变量 [TearDown] public void Teardown() { sb.Remove( 0 , sb.Length ); } } 2.6 [Test]属性
[TestFixture] public class TestSimpleCalculator { SimpleCalculator myMath; private double a; // a = 3.0 private double b; // b = 5.0 // 这是一个测试方法 [Test] public void Add() { Assert.AreEqual( a, 3.0 ); // 返回真 Assert.AreEqual( b, 5.0 ); // 返回真 a = myMath.Add( a, b ); Assert.AreEqual(a, 7.0 , " The expect result is 7, and the actual result is 8 " ); // 返回假,并且会打印出错误信息 } } 2.7 [ExpectedException(typeof(OneSupportedException))] 属性
[Test] [ExpectedException( typeof (InvalidOperationException))] public void ExpectAnException() { throw new InvalidCastException(); // 这个地方抛出了非预期的异常,所以测试方法失败。 } 2.8 [Ignore("name")]属性
[Test] [Ignore( " ignored test " )] [ExpectedException( typeof (InvalidOperationException))] public void IgnoredTest() { throw new Exception(); // 如果可以运行这个测试方法,那么这个方法不会通过测试,但是现在它已经被忽略掉了。 } 2.9 [Platform("SupportedPlatform")]属性
[Test] [Platform( " NET-1.1 " )] // 更多支持的平台请查阅NUnit的文档 public void DotNetOneOneTests() { Assert.AreEqual( " This case run on .Net1.1 " , " This method will not be executed " ); // 这个测试方法只会运行在.Net1.1的平台下。 } 2.10 [Category("NameOfCategory")]属性
[Test] [Category( " Long " )] // 这个测试方法属于名字为Long的类别,我们可以在NUnit的GUI中选择是否需要运行这一类别的测试方法,但是TestDriven.net无法使用这个属性。 public void VeryLongTest() { Assert.AreEqual( " This test will consum a very long time " , " No, It will be completed in 0.1 seconds " ); } 2.11 [Explicit]属性
[Test, Explicit] public void ExplicitTest() { Assert.AreEqual( 1 , 2 ); // 这个测试方法会自动地被忽略掉,除非我们在NUnit的GUI中手动选择它或者把鼠标放在它上面,再运行TestDriven.net, 它才会被执行 } 3 总结 |
利用TestDriven.net和NUnit进行单元测试(收)
最新推荐文章于 2010-12-30 09:22:00 发布