亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

關于遺留代碼的測試

2019-11-14 14:23:35
字體:
來源:轉載
供稿:網友

    在大多時候代碼的測試很難,因為很多代碼無法進行參數注入,那么這個時候有一款不受限的隔離框架TypeMock供你使用,不過遺憾這款軟件是付費的一個隔離框架,有15天的免費使用權,如果能解決你現有的問題我想這份費用并不能算多。TypeMock的官方下載http://www.typemock.com/。下面開始看看TypeMock是怎么樣使用的。

1:偽造一個靜態的方法來看一個例子

被測試的靜態方法

public static int DoSomethingSpecialOnALeapYear()        {            if ((DateTime.Now.Month == 3) && (DateTime.Now.Day == 29))                return 100;            return 0;        }
DoSomethingSpecialOnALeapYear

測試方法

1 [TestMethod, Isolated]2         public void FakingDateTime()3         {4             Isolate.WhenCalled(() => DateTime.Now).WillReturn(new DateTime(2016, 3, 29));//當調用當前時間的時候會返回指定的時間5             int result = MyStatic.DoSomethingSpecialOnALeapYear();6             Assert.AreEqual(100, result);7         }
FakingDateTime

2:偽造一個sealed的類

被測試的靜態方法

 1 public static bool SignedIn { get; set; } 2  3         public static bool SignOut(HttpContext current) 4         { 5             if (SignedIn) 6             { 7                 HttpsessionState session = current.Session; 8                 session.Abandon(); 9                 return true;10             }11             return false;12         }
SignOut

如果我們要保證上面的方法能不在依賴HttpContext 那么我們必須要注入這個依賴我們看測試代碼

1 [TestMethod, Isolated]2         public void FakingHttpContext()3         {4             var fakeHttp = Isolate.Fake.Instance<HttpContext>();//需要注入的偽對象5             MyStatic.SignedIn = true;6             var result = MyStatic.SignOut(fakeHttp);7             Assert.AreEqual(true, result);8         }
FakingHttpContext

3:重寫偽造類中的方法

如果一些類現在要按照我們的需要來返回相應的值我們來看看下面這個例子

1 public static bool IsMySiteNameTypemock(PRocess process)2         {3             var name = process.MachineName;4             if (process.MainModule.Site.Name.StartsWith("Typemock"))5                 return true;6             else7                 return false;8         }
IsMySiteNameTypemock

為了上面的程序正常工作那么我們必須需要通過site.Name以Typemock開始所以在測試中我們必須這么做

1 [TestMethod, Isolated]2         public void SetBehaviorOnChainExample()3         {4             var fake = Isolate.Fake.Instance<Process>();5             Isolate.WhenCalled(() => fake.MainModule.Site.Name).WillReturn("Typemock rocks");//設置Site.Name6             var result = MyStatic.IsMySiteNameTypemock(fake);7             Assert.AreEqual(true, result);8         }
SetBehaviorOnChainExample

現在我們來運行測試一下看看結果

4:跳過某一個異常的方法

如果在一個方法體中要先執行一個方法(一個依賴項)然后在執行后面的代碼下面我們在來看這個例子

1 public class Dependency//一個依賴項2     {3         public virtual void CheckSecurity(string name, string passWord)4         {5             throw new SecurityException();6         }7     }
Dependency
1 public int Calculate(int a, int b, Dependency dependency)2         {3             dependency.CheckSecurity("typemock", "rules");4             return a + b;5         }
Calculate

然后我們進行需要跳過CheckSecurity這個會報異常的方法來看看例子

1 [TestMethod, Isolated]2         public void FakeMethod_OnLiveObject() {3             var dependency = new Dependency();4             Isolate.WhenCalled(() => dependency.CheckSecurity(null, null)).IgnoreCall();//不去管這個方法的調用5             var classUnderTest = new ClassUnderTest();6             var result = classUnderTest.Calculate(1, 2, dependency);7             Assert.AreEqual(3, result);8         }
FakeMethod_OnLiveObject

5:在未來某個方法體中創建偽對象

比喻在一個放法A中我們會依賴一個B類那么這個在內部實例化的那么我們該怎么辦呢??聪旅孢@個例子

這個外部的依賴項依然是上面的Dependency。

現在我們來修改Calculate這個方法體如下

1 public static int Calculate(int a, int b) {2             var dependency = new Dependency();3             dependency.CheckSecurity("typemock", "rules");4             return a + b;5         }
Calculate

我們在Calculator中直接去實例化Dependency這個對象了。

那么我們來看看怎么去注入這個偽對象

1     [TestMethod, Isolated]2         public void FakeConstructor() {3             var fakeHandle = Isolate.Fake.NextInstance<Dependency>();//不需要注入在未來進行創建的偽對象4             var result = ClassUnderTest.Calculate(1, 2);5             Assert.AreEqual(3, result);6         }
FakeConstructor

我們采用了NextInstance這個表示在未來的某個方法體中去創建這個偽對象。ok我們來看下測試的效果

上面就簡單介紹了一個typemock的基本用法。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲男人天堂久| 亚洲成人激情图| 久久久久久久999| 欧美精品在线播放| 91黑丝在线观看| 国产欧美日韩专区发布| 日韩精品小视频| 亚洲精品综合精品自拍| 国产精品高清在线| 国产成人精品一区二区在线| 4438全国亚洲精品在线观看视频| 亚洲qvod图片区电影| 97久久久久久| 最近免费中文字幕视频2019| 欧美精品电影免费在线观看| 久热精品视频在线观看一区| 在线性视频日韩欧美| 亚洲影院色在线观看免费| 日韩中文字幕网| 中文国产成人精品| 日韩国产在线播放| 蜜臀久久99精品久久久久久宅男| 亚洲精品久久久久中文字幕欢迎你| 一本色道久久88综合亚洲精品ⅰ| 欧美在线视频a| 国产精品久久久久久久久久久新郎| xxx欧美精品| 亚洲精品在线视频| 国产成人精品av在线| 亚洲人成电影在线| 人人做人人澡人人爽欧美| 日韩高清人体午夜| 久久av在线看| 一区二区三区精品99久久| 97在线免费观看| 欧美激情视频一区| 影音先锋日韩有码| 日韩最新在线视频| 久久久久久久久久久国产| 久久久久久久久久久亚洲| 亚洲网站视频福利| 亚洲欧美制服另类日韩| 亚洲成人a**站| 欧美极品少妇全裸体| 成人黄色免费看| 欧美有码在线视频| 国外色69视频在线观看| 国产日韩欧美在线观看| 91香蕉亚洲精品| 日韩在线精品视频| 国产精品激情av在线播放| 日韩精品在线影院| 久久99热这里只有精品国产| 欧洲成人在线视频| 国产乱肥老妇国产一区二| 国产欧美韩国高清| 国产成人精品久久二区二区| 国产精品美女主播在线观看纯欲| 日韩av在线网页| 日韩国产精品亚洲а∨天堂免| 亚洲美女在线看| 国产精品黄页免费高清在线观看| 国产综合久久久久| 中文字幕精品在线| 欧美日韩在线看| 亚洲国产精品久久精品怡红院| 欧美激情一二区| 91精品久久久久久久久久入口| 欧美日韩中文字幕| 亚洲国产精品久久久久| 久久艹在线视频| 中文字幕亚洲欧美在线| 亚洲影院色在线观看免费| 97人洗澡人人免费公开视频碰碰碰| 欧美另类老女人| 欧美成人在线免费| 日韩有码在线视频| 91手机视频在线观看| 久久久久www| 久久久免费精品| 亚洲黄色av网站| 亚洲性猛交xxxxwww| 一级做a爰片久久毛片美女图片| 欧美孕妇与黑人孕交| 欧美裸体xxxx极品少妇软件| 亚洲va久久久噜噜噜| 精品综合久久久久久97| 夜夜嗨av一区二区三区免费区| 国产精品女人网站| 欧美激情精品久久久久久大尺度| 国产欧美日韩最新| 国产亚洲视频中文字幕视频| 亚洲精品欧美日韩专区| 福利一区视频在线观看| 亚洲影视九九影院在线观看| 国产精品十八以下禁看| 日本最新高清不卡中文字幕| 韩剧1988在线观看免费完整版| 久久久亚洲国产天美传媒修理工| 日韩成人在线网站| 国产在线播放不卡| 欧美在线观看一区二区三区| 久久久日本电影| 夜夜躁日日躁狠狠久久88av| 精品欧美国产一区二区三区| 亚洲自拍另类欧美丝袜| 日本成熟性欧美| 国产成人综合精品| 亚洲天堂一区二区三区| 国外成人在线视频| 91国产中文字幕| 国产成人久久久精品一区| 欧美国产日韩在线| 亚洲第一中文字幕在线观看| 午夜精品美女自拍福到在线| 久久久久久久一区二区三区| 亚洲欧美日韩一区二区在线| 久久人人爽国产| 国产精品av在线| 亚洲97在线观看| 九九精品在线视频| 秋霞成人午夜鲁丝一区二区三区| 久久综合国产精品台湾中文娱乐网| 91热精品视频| 国产一区二区日韩精品欧美精品| 97av在线播放| 久久久久久久久久久av| 欧美一区二区三区免费视| 色噜噜亚洲精品中文字幕| 国产精品网站大全| 日韩资源在线观看| 久久久精品影院| 精品免费在线视频| 亚洲人午夜精品免费| 91久久夜色精品国产网站| 狠狠做深爱婷婷久久综合一区| 欧美高清在线视频观看不卡| 亚洲精品久久视频| 91免费看视频.| 欧美极品少妇与黑人| 国产成人福利夜色影视| 国产mv久久久| 日韩极品精品视频免费观看| 国产精品成人一区二区三区吃奶| 久久久久久久久久久久久久久久久久av| 日韩电影大全免费观看2023年上| 亚洲精品久久7777777| 福利视频一区二区| www.xxxx欧美| 国产精品久久久久久影视| 欧美在线视频免费播放| 国产精品99久久久久久人| 91大神在线播放精品| 美女福利视频一区| 日本成人激情视频| 最新国产精品拍自在线播放| 亚洲精品乱码久久久久久金桔影视| 国产精品视频26uuu| 国产精品9999| 中文国产成人精品久久一| 国产精品精品国产| 亚洲天堂av在线免费| 91po在线观看91精品国产性色| 精品美女久久久久久免费|