用NUnit為.NET程式做測試 — 常用測試屬性之一 SetUp TearDown TestFixtureSetUp TestFixtureTearDown

來源:互聯網
上載者:User

在前面的入門中,每個測試類別運行良好。但是大家有沒有發現代碼的重複性太多了。

每一個測試類別中都是先建立一個 Calculate 類的對象,然後 測試每個方法,再然後設定斷言。

有沒有方法可以設定得簡單些呢?有!NUnit 中有一個屬性可以完成這個任務。

[SetUp]

被這個屬性修飾的方法會在每個測試方法運行前都執行一遍。

[SetUp]  public void init()  {      Console.WriteLine("init");  }

我們運行 NUnit  看看效果吧。在Console.Out欄裡打出了四個init

 

下面我們可以改進一下之前的測試方法的寫法了。

namespace NunitTest{    [TestFixture]    public class CalculateTest    {        private int a;        private int b;        private Calculate cal;        [SetUp]        public void init()        {            a = 10;            b = 2;            cal = new Calculate();            Console.WriteLine("init");        }        [Test]        public void TestAdd()        {            int result = cal.Add(a, b);            Assert.AreEqual(12, result);        }        [Test]        //[ExpectedException(typeof(DivideByZeroException))]        public void TestDivide()        {            int result = cal.Divide(a, b);            Assert.AreEqual(5, result);        }        [Test]        public void TestMinus()        {            int result = cal.Minus(a, b);            Assert.AreEqual(8, result);        }        [Test]        public void TestMultiply()        {            int result = cal.Multiply(a, b);            Assert.AreEqual(20, result);        }    }}

怎麼樣簡潔多了吧。運行NUnit,測試通過。!!!

一般[SetUp]用來進行一些資料的初始化等操作,他在每個測試方法執行之前執行。

與此對應的還有一個屬性,在每個測試方法執行之後執行,用於回收等一些操作,他就是

[TearDown]

我們在測試方法中添加一個試試效果吧:

       [TearDown]       public void Destory()       {           Console.WriteLine("Destory !!!");       }

運行NUnit,

 上面兩個方法屬性,分別是在每個測試方法的前後執行,也就是說這個測試類別中有多少個測試方法他們就要執行多少次了。

那麼在測試中有這麼一種情況,如果我們要測試資料庫,用上面的兩個屬性我們可以完成這個測試工作。首先在SetUp中初始化資料庫連接,然後在TearDown中釋放串連。這樣雖然可行,但是如果每個測試方法運行時串連一次資料庫,然後釋放,然後在串連,在釋放。如果次數少還好,如果次數很多,資料庫連接又是遠端話,那麼這樣是很浪費時間的了。

NUnit還為我們提供了下面兩個屬性:

        [TestFixtureSetUp]        public void TestFixtureSetUp()        {            Console.WriteLine("TestFixtureSetUp RUN !!!");        }        [TestFixtureTearDown]        public void TestFixtureTearDown()        {            Console.WriteLine("TestFixtureTearDown RUN !!!");        }

運行,效果如下了:

不用多說了吧,看看效果就知道了。[TestFixtureSetUp] 和 [TestFixtureTearDown] 分別是指在測試類別運行前和執行後調用的方法了。這樣我們可以很好的解決測試資料庫遇到的尷尬境地了……

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.