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進行單元測試(收)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.