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

歡迎訪問 生活随笔!

生活随笔

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

C#

C#怎么测试静态方法?我给出了2种方案

發布時間:2023/12/4 C# 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#怎么测试静态方法?我给出了2种方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題

假設有一個方法需要判斷當前小時范圍,代碼如下:

public?class?Class1 {public?bool?SomeMethod(){var?hour?=?DateTime.Now.Hour;if?(hour?>=?9?&&?hour?<=?12){return?true;}return?false;} }

但是,在做單元測試時,測試會偶爾失敗。

因為DateTime.Now沒法控制

[Fact] public?void?Test1() {var?expect?=?new?Class1().SomeMethod();Assert.True(expect); }

怎么辦?!

1.接口替代

常用的解決方案是使用接口替代靜態方法的直接調用,接口的實現可以使用依賴注入在運行時獲得:

public?interface?IClock {DateTime?Now?{?get;?} }public?class?Class1 {public?Class1(IClock?clock){this.Clock?=?clock;}public?IClock?Clock?{?get;?}public?bool?SomeMethod(){var?hour?=?Clock.Now.Hour;if?(hour?>=?9?&&?hour?<=?12){return?true;}return?false;} }

可以手工或使用第三方Mock框架生成接口的實例,返回一個固定值,保證單元測試始終成功:

public?class?MockClock?:IClock {private?readonly?DateTime?_now;public?MockClock(DateTime?now){?this._now?=?now;?}public?DateTime?Now?=>?_now; }[Fact] public?void?Test1() {var?expect?=?new?Class1(new?MockClock(new?DateTime(1900,1,1,9,0,0))).SomeMethod();Assert.True(expect); }??

2.Pose Mock

使用第三方Mock框架,比如Pose,直接Mock靜態方法。

無需修改業務代碼實現,只需在單元測試項目中引入nuget包Pose,然后修改測試用例代碼如下:

[Fact] public?void?Test1() {Shim?dateTimeShim?=?Shim.Replace(()?=>?DateTime.Now).With(()=>new?DateTime(1900,?1,?1,?9,?0,?0));PoseContext.Isolate(()?=>{var?expect?=?new?Class1().SomeMethod();Assert.True(expect);},?dateTimeShim); }

結論

這2種方案各有優缺點:

  • 接口替代

    • 優點:實現簡單

    • 缺點:所有調用原靜態方法的業務代碼都需要增加依賴注入參數

  • Pose Mock

    • 優點:無需修改業務代碼

    • 缺點:第三方庫不能保證Mock所有靜態方法成功

建議,針對新功能盡量使用接口,僅對不易改動的代碼才使用Pose Mock。

如果你覺得這篇文章對你有所啟發,請關注我的個人公眾號”My IO“,記住我!

總結

以上是生活随笔為你收集整理的C#怎么测试静态方法?我给出了2种方案的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 午夜av影视 | 国产原创中文av | 国产免费一区二区三区三州老师 | 国产欧美久久久久久 | 欧美国产一二三区 | 91抖音成人 | 真实乱偷全部视频 | 欧美大浪妇猛交饥渴大叫 | 欧美一级片在线播放 | 成人精品一区二区三区电影 | 欧美一级特黄aa大片 | 成人在线观看小视频 | 久综合 | 亚洲性欧美色 | 欧美激情区| 好吊日精品视频 | 成人免费观看网址 | 欧美综合自拍亚洲综合图片区 | 亚洲午夜精品久久久久久人妖 | 国产91精品一区二区麻豆亚洲 | 香蕉视频成人在线 | 一区二区三区波多野结衣 | 久久99精品国产.久久久久久 | 91狠狠 | 国产精品18p | 精品亚洲一区二区 | 成人黄色在线播放 | 亚洲第一页在线观看 | 日韩欧美国产一区二区 | 成人性做爰aaa片免费看不忠 | jizzjizz在线观看 | 国产精品久久久久久99 | 亚洲精品国产乱伦 | 一本久久综合亚洲鲁鲁五月天 | 国产精品久久久久久久专区 | 插插影视| 女人十八岁毛片 | 女人看黄色网 | 人人看人人草 | 国产精品分类 | 91热在线 | 粗大黑人巨茎大战欧美成人 | 亚洲一页 | 五月天青青草 | 最近中文字幕在线免费观看 | 国产网站视频 | 一区二区国产在线 | 日本一区二区在线观看视频 | 亚洲精品五月天 | 快播91 | 少妇高潮一区二区三区四区 | 少妇精品导航 | 亚洲高清一区二区三区 | 日韩小视频在线 | 高清av免费 | 青青青国产 | 91视频合集| 亚洲成色在线 | 冲田杏梨av | 超碰丝袜| 午夜国产一区二区 | 日韩电影在线观看一区 | 久久短视频 | 午夜精品视频在线观看 | 黄网站色视频免费观看 | 免费毛片在线播放 | 成人做爰免费视频免费看 | 精品国产色 | 国产麻豆精品久久一二三 | 亚洲AV不卡无码一区二区三区 | 欧美成人性生活视频 | 日韩一级影视 | 美女扒开腿让男生桶 | 亚洲丝袜在线视频 | 精品日韩中文字幕 | 欧美日本在线观看 | 国产精品久久久久久久一区探花 | 色屁屁视频 | 尤物精品视频在线观看 | а√天堂资源在线 | 久久久久国产精品区片区无码 | 国产小视频在线 | 在线欧美色 | www.三级 | 奇米色影视 | 肉色超薄丝袜脚交69xx | 色视频免费观看 | 91久久电影 | 精品一区二区三区久久 | 欧美一区二区在线免费观看 | 国产三级在线观看视频 | 国产ts在线视频 | 男女羞羞无遮挡 | 国产在线看黄 | 一级全黄裸体免费视频 | 秋霞影院一区二区 | 一级片免费网址 | 国产交换配乱淫视频免费 | 国产又黄又粗又爽 |