C#單元測試

來源:互聯網
上載者:User

標籤:

1.使用vs內建的單元測試組件。 項目引用Microsoft.VisualStudio.TestTools.UnitTesting。 在測試類別上標記TestClass附加屬性,在需要測試的方法上標記TestMethod附加屬性【測試】-【運行】-【所有測試】,,也可以選擇分析程式碼涵蓋範圍,看當前測試回合覆蓋的代碼比率。說明:1.在方法中使用Assert這個靜態類進行測試,裡面提供了許多供測試使用的靜態方法:    2.測試的方法必須是void的,不帶有傳回型別,:    2.使用NUnit  在http://www.nunit.org/index.php?p=download下載安裝包,安裝之後,在項目中引用安裝目錄中的nunit.framework.dll。然後在類中using NUnit.Framework;  在測試類別上標記TestFixture附加屬性,在需要測試的方法是標記Test附加屬性。測試操作有兩種形式a.測試專案為exe或者dll類庫。編譯產生之後,開啟nunit.exe程式,然後選擇Open Project,然後檔案類型選擇程式集,開啟C#項目編譯產生的exe或者dll檔案:    b.開啟項目的屬性頁面,【調試】-【啟動操作】部分,選擇啟動外部程式,然後選擇nunit.exe程式。這樣F5調試的時候,可以直接用nunit開啟,查看單元測試的執行資訊        說明:1.和Microsoft.VisualStudio.TestTools.UnitTesting的使用類似,也是使用Assert這個類中提供的靜態方法進行測試,稍有不同的是這個Assert不是靜態類:    對比Microsoft.VisualStudio.TestTools.UnitTesting的Assert靜態類,可以發現提供的靜態方法大體一致,甚至連形參名稱都相同。2.測試的方法同樣必須是void的。可以驗證:給一個有傳回值的方法標記Test附加屬性。
        [Test]        public int TestNUnit4()        {            Assert.Greater(10, 11, "不知道具體結果");            return 1;        }

運行之後,,會提示相應的測試方法運行不了,(注意是Invalid,而不是宣告失敗的Failed),原因是方法有一個非空的傳回型別,而nunit期望的是無返回結果的方法。

3.如果想讓某個方法暫時不運行測試(或者說測試的時候忽略),可以給它附加了Ignore屬性。

        [Test]        [Ignore("the method is not ready yet")]//方法標記Ignore屬性,會在nunit中忽略這個方法的運行,呈現黃色。        public void TestNUnit3()        {            Assert.AreEqual(10, 11, "it is not equal");        }
注意:Ignore屬性可以附加在方法上,也可以附加在類上,這樣整個類中的測試方法都會忽略測試回合。如下所示:
    [TestFixture]    [Ignore("the class is not ready yet")]    public class Test    {                [Test]        public void TestNUnit()        {            Console.WriteLine("12121");            Assert.AreEqual(1, 2, "it is not equal");        }        [Test]        public void TestNUnit1()        {            Assert.AreEqual(1, 1 ,"it is not equal");        }        [Test]        public void TestNUnit2()        {            Assert.AreEqual(1, Assert.Counter);        }        .        .        .    }

4.Errors and Failures中會顯示測試方法在發生錯誤和宣告失敗的情況下的資訊如下代碼:
        [Test]        public void Method1()        {            var a = 1;            var b = 0;            var test = a / b;            Assert.Pass("assert pass");        }

5.Text Output中會顯示測試回合中輸出的內容。代碼如下:
    [TestFixture]    public class Test    {        [Test]        public void TestNUnit()        {            Console.WriteLine("12121");            Assert.AreEqual(1, 2, "it is not equal");        }        //省略其他測試方法...        [SetUp]        public void SetUp()        {            Console.WriteLine("SetUp");        }        [TearDown]        public void TearDown()        {            Console.WriteLine("TearDown");        }    }

運行效果

其中有SetUp、TearDown兩個輸出。附加屬性SetUp的作用是在每個測試回合之前執行,可用作初始化工作;TearDown則是在每個測試回合之後執行,可用作釋放資源。還有兩個附加屬性:TestFixtureSetUp和TestFixtureTearDown同樣提供相同的目的,不過是在test fixture範圍下。 參考:http://confach.cnblogs.com/archive/2005/06/20/177817.aspx

C#單元測試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.