亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何測試類似轉換器的東西

如何測試類似轉換器的東西

慕工程0101907 2021-05-20 18:06:05
我有一個關于測試類(如轉換器)的問題??梢哉f我有一個從EntityA到EntityB的轉換器。轉換器看起來像這樣:public EntityB convert(EntityA){     //call interal methods     return B.}private xy internalMethod1(...){   //call other interal Method}private xy internalMethod2(...){   ....}private xy internalMethod3(...){   ....}private xy internalMethod4(...){   ....}轉換器具有一個公共方法和4個內部方法來轉換實體。我應該如何測試?Option1 我僅測試公共方法,并通過不同的示例輸入涵蓋了internalMethods中的所有情況。優點:僅測試“接口”。不知道內部結構。內部重構非常容易,不需要在測試中進行任何更改。缺點:測試所有案例的測試可能很大,可能不清楚。每個輸入都必須通過所有方法。Option2 我為公共方法和私有方法編寫測試。(某些testframeworks可以訪問諸如powermock或spock(groovy)之類的私有方法。)我單獨測試每個方法并模擬其他每個內部方法。優點:真正的小型測試,僅測試方法本身并模擬所有其他方法。缺點:我知道它是如何內部實現的,如果我在內部調用結構上重構某些方法,某些方法名或某些內容,則必須更改測試Option3 我編寫了一些新的類,這些類負責內部工作并具有公共方法優點:測試可能更清晰,并且僅針對特殊班級。缺點:一項轉換任務需要更多類。請幫助我,這里的最佳做法是什么。也許一些良好的鏈接/提示。感謝您的時間。
查看完整描述

1 回答

?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

您提出的觀點是正確的,但我認為您可能無法正確估算它們的權重。

編寫易碎的測試(與實現代碼耦合的測試)會導致難以更改的剛性代碼庫。由于編寫測試的第一要點是能夠快速進行,因此適得其反。

這就是為什么您僅通過API編寫測試的原因-它使測試與實現分離。正如您已經說過的那樣,這可能會使編寫測試變得更加困難,但是值得付出的努力是值得的,因為您將獲得安全性并能夠輕松進行重構。

當您看到代碼氣味時,選項3起作用,其中某些測試僅覆蓋部分代碼,而其他測試僅覆蓋代碼的其他部分。這通常意味著可能需要提取一個協作者。當某些內部函數僅使用某些參數而其他不使用某些參數時,尤其如此。另外,當有代碼重復之類的時候。

我的建議是,使用重構1中描述的方式編寫代碼,然后在需要時提取代碼。


查看完整回答
反對 回復 2021-05-26
  • 1 回答
  • 0 關注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號