[英]In Unit Tests, how do you handle variable naming/assignment?
在單元測試中,很多時候,我們面臨着必須定義變量值不那么重要的問題。 有時我們必須傳遞一個字符串,並檢查輸出是否為相同的字符串。 或者也許是相同的字符串,但大寫。 否則,我們正在測試的方法將返回一個空字符串,而不是獲取該字符串。
在這些情況下,如何聲明,命名和分配這些變量?
例如,考慮以URL作為輸入的HTML解析器的上下文:
string google = "http://google.com"
我說的是變量的含義,但不是在測試的背景下告訴我為什么要專門使用它(即,為什么我不使用yahoo?)。
string someUrl = "http://google.com";
在這里,我說的是“一些URL”,因此對於測試目的來說可能並不重要。 但是,我必須選擇一些網址。
string someUrl = SomeUrl(); // in this method I just return "http://google.com"
我在這里指出url並不重要,並且我將變量的值隱藏在一種方法中,可能不會以不重要的細節分散測試讀者的注意力。
我的推理正確嗎? 還有其他方法可以解決此問題嗎?
在單元測試中如何處理?
您應該根據最清楚的名稱為變量命名。 單元測試可以被認為是測試腳本,它們不必像您的核心發布代碼那樣高效或優雅。
DEVENTER(n)很難做出決定,因為它很少依賴該決定,例如在公園中漫步的方式
-道格拉斯·亞當斯(Douglas Adams)和約翰·勞埃德(John Lloyd)的《里夫(Liff)》的深層含義。
命名變量,以便它傳達意圖。
anyUrl = ...
同樣,如果沒有關系,我也可能不會使用變量(除非內聯值會損害可讀性) urlWithHyphens = ...
的名稱。 我還嘗試引入帶有SCREAMING_CAPS的局部常量(例如VALUE_OVER_THRESHOLD_OF_2_MINS)只是為了強調。 與OO一樣,好名字是可讀性+可維護性的一半。
您可以選擇喜歡的名字。 沒關系!
因此,諸如someSomething
類的名稱完全可以,硬編碼的測試值也可以。
我遵循的唯一約定是選擇值本身。 我經常看到開發人員想了幾分鍾,比如說User
對象的firstName
和lastName
應該是什么。 解決方案是僅使用一小部分您始終使用的默認值。 對我來說,如果是管理員用戶,那就絕對是Chuck Norris。 這可以節省您的時間,並使您的腳本更加一致,但這也是可選的。 (但是,由於您選擇的網址為http://www.google.com"
因此您似乎已經在執行此操作)。
如果在一種方法中僅使用一個URL,則為var url。 如果我使用更多,則為var url1,var url2或var urlGoogle,var urlYahoo。 保持簡短,仍然有意義,不要對它考慮太多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.