Dot-Net
如何在 MSTest 單元測試項目中使用“外部”配置文件(即使用 configSource)?
為簡單起見,我通常將很多配置(即 app.config 和 web.config 的內容)拆分為單獨的 .config 文件,然後使用 ‘configSource’ 屬性從主配置文件中引用它們。例如:
<appSettings configSource="appSettings.config"/>然後將所有鍵/值對放在該 appSettings.config 文件中,而不是將其內聯在主配置文件中:
<appSettings> <add key="FirstKey" value="FirstValue"/> <add key="SecondKey" value="SecondValue"/> ... </appSettings>這通常適用於應用程序本身,但我在嘗試編寫單元測試時遇到問題,無論出於何種原因,需要從儲存在這些外部文件之一中的配置部分獲取某個值。(我知道其中大多數可能會被視為“集成測試”,因為它們依賴於配置系統,而且我也確實有“純單元測試”,但這些不是問題。我真的在尋找測試這些配置值是否被正確檢索並以正確的方式影響行為)。
由於 MSTest 如何編譯並將輸出複製到與每次測試執行不同的看起來模糊的文件夾(而不是您可能認為的“bin”文件夾),它似乎永遠無法在測試時找到那些外部文件正在執行。我嘗試過使用後期建構操作來完成這項工作,但沒有運氣。有沒有辦法在執行時將這些外部文件複製到正確的輸出文件夾中?
找到了:
如果您編輯測試執行配置(通過在添加新單元測試時點兩下放入“解決方案項目”解決方案文件夾的 .testrunconfig 文件),您會看到一個測試執行配置對話框。那裡有一個名為“部署”的部分,您可以在其中指定解決方案中任何位置的文件或整個文件夾,這些文件或整個文件夾可以在執行時與已編譯的程序集一起復製到正確的文件夾中。
通過這種方式,我現在實際上可以在一組外部 .config 文件中定義我的大部分配置,並在每次測試執行時自動將它們複製出來。