簡體   English   中英

在單元測試中,如何處理變量命名/賦值?

[英]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對象的firstNamelastName應該是什么。 解決方案是僅使用一小部分您始終使用的默認值。 對我來說,如果是管理員用戶,那就絕對是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM