精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

精品久久久久久久久久久下田| av成人手机在线| 影音先锋中文字幕一区| 亚洲精品成人久久久| 国产黄页在线观看| 大胆av不用播放器在线播放| 国内欧美视频一区二区| 久久久久久久久久久免费精品| 美女又爽又黄视频毛茸茸| 外国电影一区二区| 亚洲综合丝袜美腿| 日韩av电影在线观看| 国产美女无遮挡永久免费| 亚洲国产激情| 深夜精品寂寞黄网站在线观看| 中文字幕乱妇无码av在线| 精精国产xxx在线视频app| 久久尤物电影视频在线观看| 成人网欧美在线视频| 日韩黄色精品视频| 婷婷色综合网| 亚洲免费视频网站| 熟妇女人妻丰满少妇中文字幕| 在线精品亚洲欧美日韩国产| 亚洲精品免费看| 日本高清不卡三区| 成人精品一二区| 亚洲色图14p| 四虎影视成人精品国库在线观看| 亚洲午夜激情av| 中国成人亚色综合网站| 免费在线一级视频| 成人国产精品免费观看视频| 成人性生交大片免费观看嘿嘿视频| 亚洲欧美偷拍视频| 在线高清一区| 欧美成人免费全部观看天天性色| 国产成人免费观看网站| 一道在线中文一区二区三区| 亚洲成人在线视频播放| 精品国产一二区| 美女视频一区| 色狠狠综合天天综合综合| 国产男女免费视频| 国产在线拍揄自揄拍视频| 亚洲精品欧美激情| 丰满女人性猛交| 欧美13一16娇小xxxx| 国产午夜精品美女毛片视频| 美国av一区二区三区| 日本韩国免费观看| 99精品欧美一区二区三区小说| 97se国产在线视频| www.成人在线观看| 国产精品一区一区三区| 91美女片黄在线观| 国产免费av电影| 国产精品一二三在| www.久久爱.cn| 亚洲av无码乱码在线观看性色| 国产伦精一区二区三区| 亚洲在线免费观看| 高潮一区二区三区乱码| 成人精品一区二区三区四区| 国产精品xxxx| 麻豆md0077饥渴少妇| 四虎精品免费视频| 午夜激情一区| 欧美激情免费视频| 国产成人精品a视频一区| 亚洲伦理精品| 日本一区二区不卡| 一级特黄aa大片| 黄色日韩网站视频| 国产精品久久波多野结衣| 欧洲成人一区二区三区| 91丨porny丨蝌蚪视频| 欧洲高清一区二区| 秋霞午夜在线观看| 亚洲综合999| 国产成人亚洲精品无码h在线| 欧美韩国亚洲| 777xxx欧美| 国产高清成人久久| 日产精品一区二区| 色综合视频网站| av资源免费观看| 奇米色一区二区| 亚洲自拍在线观看| 天天干天天色天天| 国产精品素人一区二区| 国产香蕉一区二区三区| 日产福利视频在线观看| 欧美日韩精品专区| 秘密基地免费观看完整版中文| 夜夜躁狠狠躁日日躁2021日韩| 日韩中文有码在线视频| 国产真人真事毛片| 日韩1区2区日韩1区2区| 亚洲一区二区三区视频播放| 深夜福利视频在线免费观看| 欧美国产亚洲另类动漫| 国产成人艳妇aa视频在线 | 国内不卡的一区二区三区中文字幕| 日韩欧美一二三区| 国产黄片一区二区三区| 欧美va天堂| 国产精品久久久亚洲| 国模无码一区二区三区| 国产精品美女一区二区在线观看| 国产成人艳妇aa视频在线| 日本中文字幕一区二区| 亚洲国产天堂久久综合网| 日韩欧美在线视频播放| 免费在线播放第一区高清av| 91精品国自产在线观看| 成人免费高清在线播放| 五月综合激情日本mⅴ| 婷婷激情5月天| 一个色免费成人影院| 欧美国产第一页| 一区二区国产欧美| 久久久亚洲精品一区二区三区| 欧美日韩激情四射| 国产亚洲高清一区| 在线国产精品视频| 日韩欧美在线观看免费| 成熟亚洲日本毛茸茸凸凹| 一本久道久久综合| 欧美va在线观看| 亚洲欧美国产精品专区久久| 日韩高清免费av| 国产精品白丝av| 中国一级黄色录像| 日韩精品第二页| 中文字幕久久亚洲| 青青国产在线视频| 久久夜色精品国产噜噜av| 亚洲 自拍 另类小说综合图区| 欧美激情精品| 欧美大奶子在线| aaaa一级片| 一区二区三区在线高清| 日本高清免费观看| 欧美+亚洲+精品+三区| 91老司机在线| 亚洲91av| 日韩欧美在线影院| 青青草免费av| 成人污污视频在线观看| 欧美午夜性视频| 国产精品久久久久av蜜臀| 欧美精品videos| 日本波多野结衣在线| 精品国产乱码久久久久久婷婷| 欧洲熟妇的性久久久久久| 亚洲国内自拍| 久久久影院一区二区三区| 中文在线а√天堂| 国产亚洲精品日韩| 91国内精品久久久| 18欧美乱大交hd1984| 久久久精品视频国产| 在线高清一区| 欧美高清性xxxxhd| 亚洲成av在线| 美女福利精品视频| 日本高清视频免费观看| 色偷偷一区二区三区| 免费成人深夜天涯网站| 韩国毛片一区二区三区| 欧美国产综合在线| 亚洲图区在线| 91精品久久久久久综合乱菊| 黄av在线播放| 亚洲成人av资源网| 激情网站在线观看| 亚洲视频在线观看一区| 美女黄色一级视频| 性一交一乱一区二区洋洋av| 亚洲午夜精品久久| 91蝌蚪精品视频| 欧美一级淫片播放口| 777电影在线观看| 欧美不卡在线视频| 亚洲熟女综合色一区二区三区| 中文av字幕一区| 国偷自产av一区二区三区麻豆| 99综合视频| 椎名由奈jux491在线播放| 超碰cao国产精品一区二区| 欧美重口另类videos人妖| 日本不卡不卡| 日韩经典第一页| 亚洲综合五月天婷婷丁香| 亚洲丰满少妇videoshd| 国产aaaaaaaaa| 99精品热视频| 国产xxxxhd| 免费看精品久久片| 欧美日韩在线一| 91成人国产| 欧美日韩一区二区视频在线 | 男女免费观看在线爽爽爽视频| 亚洲免费视频观看| 高潮毛片7777777毛片| 欧美色倩网站大全免费| 伊人久久综合视频| 亚洲伦理在线精品| 人人妻人人澡人人爽| av在线一区二区| 天天色天天干天天色| 三级久久三级久久| 国产网站免费在线观看| 欧美成人69av| 亚洲精品中文综合第一页| 亚洲国产欧美日韩在线观看第一区 | 亚洲国产欧美在线成人app | 中文字幕久久一区| 偷拍自拍亚洲色图| 动漫一区二区在线| 成人国产精品久久| 国产精品久久久久久久久男| 日韩激情电影免费看| 欧美黄色片在线观看| 日本中文字幕在线视频| 国产一区二区三区在线视频| 亚洲aⅴ乱码精品成人区| 欧美成人在线直播| www.97av.com| 日韩女优制服丝袜电影| 国产喷水福利在线视频| 欧美高清激情brazzers| 中文字幕一级片| 日本韩国一区二区| 高潮毛片又色又爽免费 | 久久国产精品视频在线观看| 女人色偷偷aa久久天堂| 无码人妻精品一区二区三区99v| 色婷婷亚洲mv天堂mv在影片| 天堂资源在线亚洲资源| 你懂的一区二区三区| 蜜桃传媒视频麻豆一区| 爽爽窝窝午夜精品一区二区| 精品高清视频| 日本午夜精品久久久| 国产一区二区黄色| 欧美日韩导航| 欧美大香线蕉线伊人久久| 一本久久青青| 四虎影院一区二区三区 | 91专区在线观看| 国产婷婷精品| 欧美 激情 在线| 久久久国产精品一区二区中文| 日韩欧美精品在线观看视频| 久久看片网站| 少妇一级淫免费播放| 久久99国产精品免费| 日本在线观看视频一区| 懂色av一区二区三区免费看| 成人在线电影网站| 91麻豆福利精品推荐| 日本精品在线观看视频| 国产精品久久99| 97成人资源站| 亚洲福利一区二区| 中文字幕精品无| 欧美日韩国产精品自在自线| 国产色片在线观看| 亚洲福利精品在线| 欧美套图亚洲一区| 久久色免费在线视频| 久久五月精品中文字幕| 欧美亚洲免费电影| 国产精品第一国产精品| 91超碰在线电影| 日韩有码中文字幕在线| 中文精品一区二区三区| 在线日韩欧美| 欧美一级裸体视频| 国产乱妇无码大片在线观看| av网页在线观看| 欧美国产日韩在线观看| 免费网站观看www在线观| 日韩欧美黄色动漫| 国产精品久久无码一三区| 亚洲国产精品久久久久秋霞不卡| 国产天堂在线| 欧美大片免费观看在线观看网站推荐| 黄色软件视频在线观看| 国产欧美婷婷中文| 欧美一级一片| 一区二区三区四区| 国产精品视频| 91pony九色| 久久久久国产成人精品亚洲午夜| 人妻人人澡人人添人人爽| 欧美午夜电影在线| h狠狠躁死你h高h| 亚洲人成网站999久久久综合| 在线视频中文字幕第一页| 国产成人av在线| eeuss鲁片一区二区三区| 亚洲午夜久久久影院伊人| 国产一区二区三区的电影| 激情文学亚洲色图| 国产欧美一区二区三区在线看蜜臀| 青娱乐在线视频免费观看| 欧美色网站导航| 日本黄在线观看| 久久久久久中文| av在线国产精品| 午夜一区二区三区| 裸体素人女欧美日韩| 亚洲一区和二区| 亚洲女人小视频在线观看| 成人午夜精品视频| 精品视频在线播放色网色视频| 在线欧美三级| 91精品国产综合久久久久久久久 | 国产精品1024| 婷婷社区五月天| 精品视频在线看| 国产三级在线免费| 青青草成人在线| 日本国产精品| 无码专区aaaaaa免费视频| 成人一区在线看| 精品小视频在线观看| 日韩一级高清毛片| 免费av在线播放| 国产精品一区=区| 成人亚洲一区| 男女无套免费视频网站动漫| 久久欧美中文字幕| 亚洲欧美偷拍一区| 精品中文视频在线| 一二三四视频在线中文| 97久久人人超碰caoprom欧美| 99久久精品费精品国产| 国产福利在线免费| 国产精品成人免费| 亚洲综合精品国产一区二区三区| 中文字幕日韩专区| 人人精品久久| 97超碰人人爱| 国产激情精品久久久第一区二区 | 精品美女国产在线| 视频福利在线| 欧美资源在线观看| 国产伦精品一区二区三区千人斩 | 国产精品一区二区视频| 日本青青草视频| 精品国内片67194| 国内精彩免费自拍视频在线观看网址| 国产另类自拍| 99热精品在线| 尤物视频最新网址| 精品视频一区二区三区免费| 麻豆网站在线看| av一区二区三区免费| 国产精品入口| 国产18无套直看片| 91精品欧美一区二区三区综合在| а√资源新版在线天堂| 99国产视频| 亚洲欧美日本国产专区一区| 娇妻被老王脔到高潮失禁视频| 欧美日韩国产精品自在自线| 亚洲按摩av| 欧美日韩高清免费| 国内久久精品视频| 日韩av无码中文字幕| 亚洲美女久久久| 亚洲热av色在线播放| 精品丰满人妻无套内射| 久久久国产精品麻豆| 99热这里只有精品5| 欧美亚洲视频在线看网址| 日韩综合网站| 亚洲精品久久一区二区三区777 | 美日韩中文字幕| 第四色婷婷基地| 亚洲成人综合视频| 成人动漫在线播放| 97夜夜澡人人双人人人喊| 久久国产精品久久w女人spa| 午夜爽爽爽男女免费观看| 亚洲精品短视频| 日韩成人综合网| 北条麻妃在线观看| 亚洲欧美在线视频| 天堂√在线中文官网在线| 91精品久久久久久久久久| 国产欧美一级| tube国产麻豆| 伊人久久精品视频| 国产一级成人av| 成人高清在线观看视频|