簡體   English   中英

使用不同的應用程序鍵運行單元測試用例

[英]Run unit test cases with different app keys

我有一個包含100個UTC的單元測試用例項目。 單元測試項目具有一個app.config文件。 app.config文件中有一個XYZFeatureOn標志,當標志為true時,有100個測試用例運行綠色,而當標志為false時,其余50個測試用例運行綠色。 在每個測試案例中,通過將配置文件中的鍵替換為以下內容來打開/關閉該功能:

var xmlDoc = new XmlDocument();
xmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);

xmlDoc.SelectSingleNode("//XYZFeatureON").Attributes["Enabled"].Value = true/false;
xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);

ConfigurationManager.RefreshSection("XYZFeatureON");

現在,當我在TFS中運行測試套件時,其中一半會失敗,因為標志初始化為true或false,但是當單獨運行測試時,測試用例會運行綠色。

通過運行以上代碼,它實際上並不會在運行時更改設置。

在這種情況下我該怎么辦? 找不到每種用例的情況下是否都可以有兩個不同的app.config文件。

任何幫助表示贊賞。

您現在擁有的是對外部事物的依賴,這與單元測試方法背道而馳。

您有兩種選擇:

  1. 將其抽象出來並在測試中進行模擬
  2. 將其作為參數傳遞給任何需要它的方法。 然后,您的測試只需通過在方法簽名中傳遞不同的選項來調用它需要調用的任何內容。

這樣,由於您不需要更新配置文件,因此測試將可靠並且運行速度更快。

最后,進行一些集成測試,以確保正確傳遞配置值並每天調用它。

您提到在代碼深處讀取配置值。

在這種情況下,一種選擇是讀取它並立即將其存儲在應用程序緩存中。

從那時起,您可以在需要時從緩存中讀取它。

您甚至可以創建一個抽象,即IApplicationSettings接口,該接口處理讀取和設置應​​用程序緩存中的內容,並將其傳遞給代碼中需要它的任何部分,因此您可以調用Get方法並使用該值,如果需要的話這樣,您就可以在測試中模擬該值並返回測試所需的任何內容。

關鍵是,如果您想進行有意義且可維護的簡單測試,則需要進行一些更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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