精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Protected方法與單元測試

開發 測試
Protected是一個有趣而有用的修飾符,它把方法的訪問成員嚴格限制在自身或自己的子類身上。本文討論了protected方法的測試和Mock,以及其中需要注意的一些可測試性的方面。

本篇文章討論了protected方法的測試和Mock,以及其中需要注意的一些可測試性的方面。這是一篇簡單的文章,討論了單元測試中遇到protected成員的應對方案。此外,在文章最后也希望和大家討論一下某個特殊的情況下的處理方法。

protected是一個有趣而有用的修飾符,它把方法的訪問成員嚴格限制在自身或自己的子類身上。換句話說,在使用過程中,protected成員對外部是開放的(因為其他類可以通過繼承來使用該成員),又是封閉的(不是自身或子類的一切成員都無法訪問)。而對于單元測試來說,protected成員又是尷尬的,因為它的“開放”意味著我們必須對它進行單元測試,而“封閉”又阻礙了我們在單元測試中涉及protected成員。

測試protected方法

現在有一個類,其中包含一個protected方法:

  1. public class SomeClass  
  2. {  
  3.     protected int SomeMethod(string arg) { ... }  

如果我們需要對這個protected方法進行單元測試,可以在測試代碼中準備一個輔助類型:

  1. public class SomeClassForTest : SomeClass  
  2. {  
  3.     public int PublicSomeMethod(string arg)  
  4.     {  
  5.         return this.SomeMethod(arg);  
  6.     }  

于是在單元測試中,便可以通過調用PublicSomeMethod來測試基類的SomeMethod方法:

  1. var testClass = new SomeClassForTest();  
  2. var result = testClass.PublicSomeMethod(null);  
  3. Assert.Equal(0, result); 

非常簡單。

如果您覺得麻煩,也可以將SomeClass類中的SomeMethod方法改為protected internal,這樣便可以在InternalVisibleTo的測試程序集中使用了。不過,我覺得為單元測試而改變成員的訪問級別不是一個合適的做法。

對protected方法進行Mock

現在有一個類,其中有一個protected方法:

  1. public class SomeClass  
  2. {  
  3.     protected virtual int SomeMethod(string arg) { ... }  

并且,某個被測試的方法接受SomeClass作為參數。雖然被測試的方法不會直接調用SomeMethod方法,但是SomeMethod的實現會影響到公開接口的表現形式。于是,我們需要對SomeMethod進行Mock或Stub。為此,我們同樣需要準備一個輔助類型:

  1. public class MockSomeClass : SomeClass  
  2. {  
  3.     protected override int SomeMethod(string arg)  
  4.     {  
  5.         return this.PublicSomeMethod(arg);  
  6.     }  
  7.  
  8.     public virtual int PublicSomeMethod(string arg)  
  9.     {  
  10.         return base.SomeMethod(arg);  
  11.     }  
  12. }  

在MockSomeClass中,我們覆蓋了基類的SomeMethod實現,使它調用了子類中公開的PublicSomeMethod方法,而PublicSomeMethod內部又調用了基類的SomeMethod方法。因此,如果您不去進行任何處理,那么MockSomeClass會保持SomeMethod的實現不變。而如果您需要對SomeMethod進行Mock或Stub的時候,便可以從PublicSomeMethod下手:

  1. Mock<MockSomeClass> mockSomeClass = new Mock<MockSomeClass>() { CallBase = true };  
  2. mockSomeClass.Setup(c => c.PublicSomeMethod("123")).Returns(123);  
  3.  
  4. DoSomeTest(mockSomeClass.Object); // use the mock object  

也很容易。

為了可測試性

值得注意的是,為了“可測試性”,第二部分中的protected方法必須是virtual的,因為我們需要在子類中進行override。同理,Mock框架能夠輔助的方法也必須是virtual的,即使是一個public方法。那么,您覺得這是為了可測試性而做出的讓步嗎?或者換句話說,您覺得,一個不可以override的protected方法,但是會影響到其他公開接口的功能,這是不是一個合理的設計呢?如果這是一個合理的設計,又不想作出這樣的讓步……我們又該怎么做呢?

本文來自老趙點滴:《與protected成員有關的單元測試方式》

【編輯推薦】

  1. 開發人員最欠缺哪些測試知識?
  2. 編程對軟件測試人員意味著什么?
  3. 使用JBPM工作流引擎測試的一個例子
  4. 軟件測試項目的啟動、規劃與需求分析
  5. 偉大騾子的一生和性能測試
責任編輯:yangsai 來源: 老趙點滴
相關推薦

2017-01-14 23:42:49

單元測試框架軟件測試

2011-05-16 16:52:09

單元測試徹底測試

2009-12-23 15:03:52

WPF單元測試

2023-07-26 08:58:45

Golang單元測試

2011-06-20 17:25:02

單元測試

2024-10-16 16:09:32

2017-02-21 10:30:17

Android單元測試研究與實踐

2017-04-07 13:45:02

PHP單元測試數據庫測試

2009-06-02 14:24:32

Hibernate單元測試HSQLDB

2017-01-16 12:12:29

單元測試JUnit

2017-01-14 23:26:17

單元測試JUnit測試

2020-08-18 08:10:02

單元測試Java

2017-03-23 16:02:10

Mock技術單元測試

2021-05-05 11:38:40

TestNGPowerMock單元測試

2020-05-07 17:30:49

開發iOS技術

2011-07-04 18:16:42

單元測試

2017-09-13 15:05:10

React前端單元測試

2017-09-10 17:41:39

React全家桶單元測試前端測試

2020-07-07 07:33:12

Java單元集成

2012-05-17 09:09:05

Titanium單元測試
點贊
收藏

51CTO技術棧公眾號

一区二区中文字幕| 一本在线高清不卡dvd| 91视频免费在线观看| 欧美日韩人妻精品一区二区三区| 日韩一二三区| 日韩欧美国产激情| 正在播放亚洲| 熟妇人妻中文av无码| 日韩vs国产vs欧美| 九九热最新视频//这里只有精品| 日本丰满少妇裸体自慰| 国产一区二区色噜噜| 亚洲免费观看高清完整版在线| 国产精品一区二区免费| 中文字幕第2页| 韩日欧美一区| 亚洲天堂免费观看| 91香蕉国产线在线观看| 无码小电影在线观看网站免费| 国产日韩欧美综合一区| 成人永久免费| 在线免费看av的网站| 极品少妇一区二区三区| 中文字幕在线视频日韩| 最新在线黄色网址| 久久三级中文| 欧美在线色视频| 成人黄色大片网站| 日日夜夜精品一区| 91偷拍与自偷拍精品| 91在线播放国产| 国产女主播喷水视频在线观看| 国产精品草草| 久久九九全国免费精品观看| 免费在线观看成年人视频| 日韩免费在线电影| 91久久线看在观草草青青| 国产成人亚洲综合无码| 免费在线观看黄色网| 国产日韩欧美精品综合| 久久精品日产第一区二区三区 | 亚洲黄色小说在线观看| 成人免费在线观看视频| 日韩欧美精品中文字幕| 69sex久久精品国产麻豆| 91精选在线| 1区2区3区欧美| 亚洲欧美久久234| 二区三区在线播放| 久久久久国产成人精品亚洲午夜 | 特黄视频免费观看| 欧美va在线观看| 欧美日韩国产页| 草草视频在线免费观看| 丁香花在线观看完整版电影| 亚洲美女偷拍久久| 亚洲精品偷拍视频| 黄网页在线观看| 国产精品久久久久影视| 亚洲国产精品www| 在线看免费av| 国产精品久久久久久户外露出| 日本一区精品| 97视频在线观看网站| 国产精品久久久久久久久久免费看| 亚洲日本无吗高清不卡| 免费av网站在线观看| 亚洲日本韩国一区| 九一免费在线观看| 高清电影在线观看免费| 午夜精品一区二区三区免费视频 | 91香蕉视频网址| 欧美尤物美女在线| 亚洲欧洲日韩av| 裸体裸乳免费看| 污视频免费在线观看| 亚洲曰韩产成在线| 一区二区传媒有限公司| 一区二区三区四区日本视频| 色婷婷久久久亚洲一区二区三区 | 欧美aaa在线观看| 最新av在线播放| 午夜免费久久看| 可以免费在线看黄的网站| av成人亚洲| 欧美一区二区三区四区高清| 在线免费看黄色片| 精品一区二区三区的国产在线观看| 在线视频亚洲欧美| 欧美日韩在线观看免费| 性xx色xx综合久久久xx| 国产欧美日韩精品丝袜高跟鞋| 国产日本精品视频| 懂色av中文一区二区三区| 欧美日韩国产精品一卡| 蜜桃视频网站在线观看| 午夜久久久久久久久| 中文字幕av不卡在线| 一本一道久久a久久| 亚洲欧美日韩精品久久亚洲区 | 亚洲mv在线观看| 久久人妻精品白浆国产| 精品视频一区二区三区| 日韩国产欧美区| 中国女人特级毛片| 欧美精品福利| 国产精品久久久久久久久久久久久久| av高清一区二区| 久久久噜噜噜久久人人看| 中国老女人av| 精品无人乱码一区二区三区 | 中文字幕一二三| 久久97视频| 国内精品免费午夜毛片| 一级做a爰片久久毛片16| 91香蕉国产在线观看软件| 黄色www在线观看| 高清不卡亚洲| 欧美精品一区二区三区蜜臀| www色aa色aawww| 日韩极品在线观看| 精品一区久久| 污视频免费在线观看| 欧美日韩你懂得| 91精品人妻一区二区三区蜜桃欧美| 亚洲乱码免费伦视频| 国产精品第1页| 手机福利在线| 亚洲二区在线观看| 在线观看视频你懂得| 欧美限制电影| 国产精品成人免费电影| 黄色软件在线| 欧美性xxxx极品hd满灌| 精品国产av色一区二区深夜久久| 亚洲一区二区日韩| 91香蕉电影院| 九色porny丨首页在线| 欧美日韩中字一区| 免费成人深夜天涯网站| 美女网站久久| 乱一区二区三区在线播放| 欧美人与动牲性行为| 欧美一区二区成人6969| 成人免费毛片xxx| 国内精品第一页| 一区二区三区在线观看www| 成人涩涩视频| 中文字幕久热精品在线视频| 91视频久久久| 欧美国产日韩a欧美在线观看 | 91视频免费网址| 97久久精品人人做人人爽50路| 青青在线视频免费观看| 成功精品影院| 久久全球大尺度高清视频| 刘亦菲毛片一区二区三区| 夜夜爽夜夜爽精品视频| 久久久无码人妻精品无码| 激情综合中文娱乐网| 精品国产乱码久久久久久蜜柚| 国产高清中文字幕在线| 日韩精品一区二区视频| 黄色av网站免费| 国产精品福利影院| 亚洲视频在线不卡| 在线欧美三区| 欧美日韩高清免费| 日韩电影免费观看高清完整版在线观看 | 欧美精品久久久久久久久25p| 久久亚洲国产| 91精品国自产在线观看 | 婷婷亚洲图片| 亚洲最大成人在线| 国产无遮挡裸体视频在线观看| 国产婷婷成人久久av免费高清| 懂色av中文字幕| 成人欧美一区二区三区视频网页| 国产老头和老头xxxx×| 亚洲在线黄色| 国产av不卡一区二区| 91精品国产乱码久久久竹菊| 欧美亚洲国产日本| 日本最新在线视频| 亚洲福利影片在线| 高潮毛片又色又爽免费| 国产精品国产三级国产普通话99| 日本黄色的视频| 亚洲精品欧美| 亚洲精品乱码久久久久久蜜桃91 | 欧美aa一级| 日韩在线视频国产| 色窝窝无码一区二区三区成人网站 | 在线观看国产精品日韩av| 国产免费高清视频| 黑人巨大精品欧美一区二区| 欧美日韩国产一二三区| 国产超碰在线一区| 亚洲一级免费观看| 亚洲国产高清一区| 亚洲一区二区三区精品视频| youjizz亚洲| 国产在线观看精品| 成人小电影网站| 美女av一区二区| 高清福利在线观看| 亚洲国产精品va在线观看黑人| 中文无码精品一区二区三区| 亚州成人在线电影| 1024手机在线视频| 国产欧美日韩亚州综合| caopor在线| 激情深爱一区二区| 欧美一级黄色影院| 伊人久久婷婷| 亚洲成人动漫在线| 日韩精品久久| 久久青青草原| 成人香蕉社区| 91亚洲精品丁香在线观看| 另类中文字幕国产精品| 欧美亚洲激情视频| 国产污视频在线播放| 欧美日本中文字幕| 快射视频在线观看| 中文字幕欧美精品在线| 黄色小视频在线免费观看| 亚洲精品国产精品乱码不99按摩| xxxx国产精品| 在线播放中文字幕一区| 中文字幕日本视频| 一本一道波多野结衣一区二区| 日本一区二区不卡在线| 一级精品视频在线观看宜春院 | 色综合久久99| √资源天堂中文在线| 亚洲国产精品综合小说图片区| 久久久精品视频免费观看| 亚洲三级电影网站| 欧美视频www| 中文字幕一区免费在线观看| 一级黄色毛毛片| 国产精品丝袜久久久久久app| 强伦人妻一区二区三区| 久久久综合精品| 醉酒壮男gay强迫野外xx| 国产91精品在线观看| 性高潮久久久久久| 岛国精品在线观看| a级一a一级在线观看| 99久久久精品免费观看国产蜜| 日本性生活一级片| av一二三不卡影片| 扒开jk护士狂揉免费| 久久理论电影网| 丰满的亚洲女人毛茸茸| 成人欧美一区二区三区小说| 东方av正在进入| 亚洲一区二区三区不卡国产欧美| 69精品久久久| 日韩欧美成人免费视频| 日韩欧美国产另类| 欧美日本在线观看| a天堂视频在线| 亚洲大胆人体在线| 欧美色18zzzzxxxxx| 一区二区三区无码高清视频| 黄色一级大片在线免费看产| 久久91超碰青草是什么| 国产欧洲在线| 国产精品亚洲综合天堂夜夜| 国产精品日本一区二区三区在线 | 国产精品黄色av| 欧美在线一级| 成人免费看片网址| 亚洲+变态+欧美+另类+精品| 日韩欧美一区二区在线观看| 亚洲成人二区| 免费毛片网站在线观看| 日韩国产一区二| 日本亚洲一区二区三区| 99久久久久久| 亚洲av无一区二区三区| 亚洲国产视频网站| 中文字幕天堂在线| 日韩欧美精品三级| 可以在线观看的av| 欧美成人精品h版在线观看| 国产高清中文字幕在线| 国产日韩精品在线播放| 欧美精品中文| 亚洲日本精品国产第一区| 亚洲精品女人| а 天堂 在线| xnxx国产精品| 欧美成人精品一区二区免费看片| 色诱视频网站一区| aaa一区二区三区| 在线播放国产一区二区三区| 国内小视频在线看| 国产精品一区二区久久精品| 国产精品videossex| 在线视频91| 久久综合亚州| 国产日韩视频一区| 中文字幕中文字幕一区| 日韩人妻精品中文字幕| 欧美不卡一二三| 日本www在线观看视频| 1769国产精品| 这里视频有精品| av动漫免费观看| 石原莉奈一区二区三区在线观看 | 欧美性生活一级片| 裸体裸乳免费看| 美女在线视频一区| 国产免费无遮挡吸奶头视频| 亚洲国产欧美在线| 精品久久无码中文字幕| 日韩中文第一页| 成人免费毛片嘿嘿连载视频…| 激情视频一区二区| 国产精品v欧美精品v日本精品动漫| 欧美男女交配视频| 国产三级一区二区| 91video| 亚洲精品美女久久久久| 在线看一级片| 91久久精品国产91久久性色tv| 久久视频精品| 男女视频在线看| 国产欧美一区二区三区在线老狼| 日本韩国欧美中文字幕| 亚洲第一天堂无码专区| 欧洲黄色一区| av一区二区在线看| 中文在线日韩| 亚洲成人av免费观看| 综合欧美一区二区三区| 国产在成人精品线拍偷自揄拍| 伊人伊成久久人综合网站| 二吊插入一穴一区二区| 日韩高清dvd| 蜜桃在线一区二区三区| 国产视频不卡在线| 欧美亚洲综合在线| av中文在线| 国产原创欧美精品| 香蕉av一区二区| 中文字幕在线视频一区二区| 亚洲免费观看高清完整版在线观看| 国产av精国产传媒| 色综合天天狠天天透天天伊人| av成人资源| 国产一二三区在线播放| 成人中文字幕在线| 成人午夜视频精品一区| 日韩成人黄色av| 日韩中文在线播放| 永久免费精品视频网站| 国产精品一区二区果冻传媒| 久久久精品视频在线| 精品对白一区国产伦| 天堂中文av在线资源库| 日韩欧美一区二区视频在线播放| 久久精品国产精品亚洲综合| 无码人妻精品中文字幕| 日韩欧美国产综合| 狠狠躁少妇一区二区三区| 欧美一二三区| 老鸭窝一区二区久久精品| www青青草原| 亚洲国产精品福利| free欧美| 日本一道在线观看| 99久久久久久| 中文字幕一区二区三区四区免费看| 久久亚洲国产成人| 精品素人av| 亚洲一区在线不卡| 亚洲免费伊人电影| 蜜桃视频在线观看视频| 成人在线观看视频网站| 一区二区自拍| www中文在线| 日韩激情第一页| 欧美高清你懂的| 高清欧美精品xxxxx| 国产精品午夜久久| 丰满岳乱妇国产精品一区| 国产成人一区三区| 欧美人与禽猛交乱配视频| 亚洲国产av一区| 日韩写真欧美这视频| 日韩电影大全网站| 欧美乱做爰xxxⅹ久久久| 久久久精品黄色| 亚洲av无码乱码在线观看性色| 日韩美女主播视频| 欧美亚洲不卡|