日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 使用Xunit 框架进行代码测试

發布時間:2023/12/20 C# 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 使用Xunit 框架进行代码测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何引用xunit 管理包,和新建測試類這里就不在一一進行詳說,可以自行搜索。

為啥要進行代碼測試,這樣能有效減少我們代碼種的bug.好處多多,這里也不在進行贅述。

主要測試代碼:

using DemoXUnitText; using System; using Xunit;/*當一個測試方法需要多組測試參數時候,Fact 標識屬性已經不能滿足我們的需求,我們需要另外一種方式,InlineData,Theory 屬性標識 請看方式11方法雖然能夠實現批量數據的測試,但是參數還是只能寫到測試代碼中,如果能夠讀取某個特定文件和數據庫就好了,請看方法二使用MemberData(屬性名,MemberType=類名) 標識進行方法標識,要求靜態字段,實現IEnumerable<Object[]>接口. 在加載靜態字段也可以通過IO來讀取數據,進行測試。Over*/ namespace DemoText {[Trait("Calculator","計算機")]public class CalculatorTests{[Fact]public void CalculatorAdd(){//arrange var sut = new Calculator();//actint result = sut.Add(1, 4);//assertAssert.Equal(5, result);}[Trait("Cal","DataTestOne")][Theory][InlineData(1,2,3)][InlineData(2,3,5)]public void CalcultorAddMethodOne(int x,int y, int expectedNu){var sut = new Calculator();//actint result = sut.Add(x, y);//assert Assert.Equal(expectedNu, result);}[Trait("Cal", "DataTestTwo")][Theory][MemberData(nameof(TestData.DataTest),MemberType =typeof(TestData))]public void CalcultorAddMethodTwo(int x, int y, int expectedNu){var sut = new Calculator();//actint result = sut.Add(x, y);//assert Assert.Equal(expectedNu, result);}[Fact]public void CalculatorFlag(){//arrangevar sut = new Calculator();//actbool flag = sut.GetFlag();//assertAssert.True(flag);}} }

//另一個類的測試

using DemoXUnitText; using System; using System.Collections.Generic; using System.Text; using Xunit; using Xunit.Abstractions;/*自定義信息輸出,要想在測試中和控制臺一樣的輸出, 需要實現ITestOutputHelper 進行依賴注入操作見構造函數*//*如果測試中要釋放一些非托管代碼資源,可以實現IDisposable 接口詳情請見在 實現接口的偽代碼*//*有時候我們new一個測試對象相當消耗時間, 例如下面中filter的 sut,如何創建一個通用上下文呢,此處要使用依賴注入。在測試類中實現一個泛型接口,IClassFixture*/namespace DemoText {public class PatientTests:IDisposable, IClassFixture<PatientFixTrue>//ICollectionFixture<PatientFixTrue>{private Patient sut;private readonly ITestOutputHelper _outPut;private int disSumNu = 0;//運行每一個測試方法都會走構造函數public PatientTests(ITestOutputHelper output,PatientFixTrue patFixTrue){//assert//this.sut = new Patient();this.sut = patFixTrue.patient;sut.FirstName = "Bob";sut.LastName = "Man";//保存輸出幫助類this._outPut = output;}//Trait標記進行測試分組標記 key-value//一個方法名可以添加多個表示//也可可以作用到類級別[Trait("Pat","HeartBate")][Trait("Be","New")][Fact]public void PatientMeasurHeartbate(){//actint heartNu = sut.MeasurHeartbate();//assertAssert.InRange<int>(heartNu, 10, 100);}[Trait("Pat","Name")][Fact]public void PatentCheckFisrtName(){Assert.EndsWith("b", sut.FirstName);Assert.Contains("Bob", sut.FirstName);Assert.NotEqual("bob", sut.FirstName);Assert.Matches(@"^[a-zA-Z]+$", sut.FirstName);}//不需要運行某個測試可以在 Fact 標簽中添加 skip="注釋"[Fact(Skip ="跳過這個測試Create")]public void BeNewWhenCreate(){var result = sut.IsNew;Assert.True(result);}[Fact]public void HaveNoAddressWhenCreate(){Assert.Null(sut.HomeAddress);_outPut.WriteLine("測試文本信息輸出,自定義的。");}[Fact]public void HaveHadAccountProterty(){sut.AccountList.Add("賬戶1:1234");sut.AccountList.Add("賬戶2:456");sut.AccountList.Add("賬戶3:789");// Assert.Contains("1234", sut.AccountList);Assert.DoesNotContain("莊戶", sut.AccountList);Assert.Contains(sut.AccountList, ret => ret.Contains("1234"));List<string> ls = new List<string>();//Assert.Equal(sut.AccountList, ls);//判斷結果集所有的元素都包含 "賬戶"//Assert.All(sut.AccountList, x => x.Contains("賬戶"));//也可以這樣寫Assert.All(sut.AccountList, ret => Assert.Contains("賬戶", ret));Assert.All(sut.AccountList, ret=>Assert.True(ret.Length>=2));}[Trait ("Be","New")][Fact]public void BeAPatient(){Assert.IsType<Patient>(sut);Assert.IsAssignableFrom<Patient>(sut);}[Trait("Be", "New")][Fact]public void BeAAcctionHappen(){Assert.Raises<EventArgs>(handler=>sut.SleepEvent+=handler,handler=>sut.SleepEvent-=handler,()=>sut.Sleep());}public void Dispose(){_outPut.WriteLine("現在測試結束開始釋放非托管資源,運行次數:{0}",this.disSumNu++);}} }

源碼文件:https://download.csdn.net/download/weixin_43542114/16217298

總結

以上是生活随笔為你收集整理的C# 使用Xunit 框架进行代码测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。