国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#單元測試

2019-11-17 02:32:51
字體:
來源:轉載
供稿:網友

C#單元測試

2015-03-02 23:58 by xtechnet, ... 閱讀, ... 評論, 收藏, 編輯

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.VEVb.com/archive/2005/06/20/177817.aspx
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 郑州市| 呼伦贝尔市| 焦作市| 黔西县| 陆河县| 英超| 东乡县| 洱源县| 东丰县| 河北区| 德江县| 龙口市| 遵化市| 普安县| 久治县| 桦川县| 彝良县| 阳曲县| 颍上县| 长白| 本溪市| 乐陵市| 靖边县| 巴林右旗| 吉安市| 汉中市| 贵定县| 寿阳县| 邵阳县| 大同县| 莱西市| 宣恩县| 会昌县| 邻水| 康定县| 康保县| 阿巴嘎旗| 石楼县| 诸暨市| 崇文区| 玉环县|