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

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

關于遺留代碼的測試

2019-11-14 14:32:56
字體:
來源:轉載
供稿:網友

    在大多時候代碼的測試很難,因為很多代碼無法進行參數注入,那么這個時候有一款不受限的隔離框架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
国内精品美女av在线播放| 亚洲精品之草原avav久久| 隔壁老王国产在线精品| 亚洲人成人99网站| 欧美精品xxx| 久久69精品久久久久久国产越南| 国产精品吴梦梦| 中文字幕自拍vr一区二区三区| 欧美日韩亚洲成人| 啪一啪鲁一鲁2019在线视频| 国产日韩欧美在线| 97av视频在线| 国产精品高潮呻吟久久av无限| 欧美夫妻性生活视频| 亚洲在线观看视频网站| 亚洲精品一区中文字幕乱码| 国产亚洲a∨片在线观看| 日韩亚洲在线观看| 欧美精品久久久久久久免费观看| 狠狠操狠狠色综合网| 在线视频日本亚洲性| 97国产在线视频| 亚洲欧美视频在线| 视频直播国产精品| 国产精品久久久久久久久久久新郎| www亚洲欧美| 911国产网站尤物在线观看| 欧美激情国产精品| 亚洲第五色综合网| 欧美一乱一性一交一视频| 欧美精品videofree1080p| 国产精品一区二区性色av| 欧美中文在线字幕| 91国偷自产一区二区三区的观看方式| 亚洲欧美日韩精品久久奇米色影视| 国产69精品久久久久99| 日本欧美爱爱爱| 欧美成人亚洲成人日韩成人| 欧美做爰性生交视频| 国外视频精品毛片| 一本大道久久加勒比香蕉| 国产玖玖精品视频| 亚洲免费一级电影| 久久久噜噜噜久久久| 91网站在线免费观看| 成人在线激情视频| 中文字幕精品久久| 91美女片黄在线观看游戏| 日韩av网址在线| 亚洲自拍偷拍色图| 国产经典一区二区| 疯狂蹂躏欧美一区二区精品| 国产+人+亚洲| 2019中文字幕全在线观看| 麻豆乱码国产一区二区三区| 国产精品观看在线亚洲人成网| 亚洲欧洲在线免费| 成人国产在线激情| 欧美成人亚洲成人日韩成人| 91精品久久久久久久久久久久久| 色婷婷综合久久久久中文字幕1| 97香蕉超级碰碰久久免费的优势| 国产欧美日韩中文字幕在线| 成人免费淫片aa视频免费| 欧美日韩国产成人在线| 国产精品av在线播放| 中文字幕av一区二区三区谷原希美| 国产福利精品在线| 91av视频在线观看| 大胆人体色综合| 久久综合五月天| 色悠悠久久久久| 欧美日韩成人精品| 久久成年人视频| 成人在线视频网| 狠狠躁夜夜躁人人爽超碰91| 成人免费观看49www在线观看| 亚洲欧美制服第一页| 视频在线观看一区二区| 国外色69视频在线观看| 久久天堂av综合合色| 久久国产精品久久久久久| 亚洲一级黄色av| 92看片淫黄大片看国产片| 一个人www欧美| 亚洲深夜福利网站| 亚洲福利视频免费观看| 久久久久久中文| 国产精品久久久精品| 国产精品丝袜视频| 国产亚洲精品美女久久久| 国产日韩精品入口| 琪琪亚洲精品午夜在线| 日韩欧美成人免费视频| 亚洲成人久久久| 欧美激情精品久久久久久变态| 亚洲精品日韩丝袜精品| 国语自产在线不卡| 最新日韩中文字幕| 亚洲女在线观看| 日韩理论片久久| 欧美成人免费全部观看天天性色| 欧美成人黑人xx视频免费观看| 欧美国产高跟鞋裸体秀xxxhd| 精品女厕一区二区三区| 日韩成人在线观看| 中文字幕一区二区精品| 国产亚洲精品激情久久| 亚洲欧美综合另类中字| 亚洲视频专区在线| 91在线观看免费高清完整版在线观看| 亚洲桃花岛网站| 国内成人精品视频| 69av视频在线播放| 北条麻妃99精品青青久久| 日韩av在线不卡| 国产一区二区黑人欧美xxxx| 91成人天堂久久成人| 国产欧美婷婷中文| 国产精品福利在线观看网址| 久久国产精品久久久久久久久久| 欧美亚洲第一区| 亚洲乱码国产乱码精品精天堂| 久久久久久网站| 性夜试看影院91社区| 欧美大片在线免费观看| 日本视频久久久| 国产成人精品久久二区二区91| 国产成人亚洲综合91精品| 成人精品在线视频| 亚州av一区二区| 色综合91久久精品中文字幕| 国产亚洲精品一区二区| 中文字幕日韩欧美精品在线观看| 国产在线拍偷自揄拍精品| 色老头一区二区三区| 日韩麻豆第一页| 青青精品视频播放| 91啪国产在线| 午夜精品在线视频| 国产一区二中文字幕在线看| 亚洲欧美日韩精品久久| 成人乱人伦精品视频在线观看| 欧美精品videofree1080p| 亚洲国产又黄又爽女人高潮的| 欧美超级乱淫片喷水| xvideos成人免费中文版| 欧美日韩国产黄| 91精品国产高清久久久久久久久| 国产性色av一区二区| 欧美激情视频网址| 欧美性受xxx| 国产成人精品视| 日本一欧美一欧美一亚洲视频| 日韩在线视频播放| 精品亚洲国产成av人片传媒| 国产精品一香蕉国产线看观看| 久久久久久国产免费| 国产精品91免费在线| 欧美激情啊啊啊| 亚洲欧美日韩网| 欧美成人性生活| 欧美xxxx做受欧美| 日本人成精品视频在线|