国产探花免费观看_亚洲丰满少妇自慰呻吟_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
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 塔河县| 济阳县| 涡阳县| 河津市| 遂昌县| 米脂县| 黎川县| 乐清市| 乡城县| 敦煌市| 阜城县| 罗田县| 瑞昌市| 徐州市| 开鲁县| 合阳县| 固原市| 绍兴市| 家居| 武定县| 新建县| 兴仁县| 当涂县| 塔河县| 宁德市| 句容市| 桦甸市| 巧家县| 湾仔区| 太原市| 四川省| 富顺县| 鄱阳县| 德令哈市| 新晃| 犍为县| 渝中区| 宜兴市| 建平县| 磐石市| 霸州市|