簡體   English   中英

如何對運行 PowerShell 腳本的 C# 庫進行單元測試

[英]How to unit test a C# library that runs PowerShell scripts

我有一個 C# 庫,它運行幾個 PowerShell 腳本來操作 Windows 管理程序。 (例如打開和關閉VM,使用vhds創建VM,獲取開關等)很難模擬環境並控制腳本的output。 用於檢查/驗證內容的腳本可能更容易,但用於操作目的的腳本可能會讓人頭疼,因為這些方法中的大多數可能是不可逆的。

我為 PowerShell 找到了一個很好的單元測試框架 Pester。 但是我的代碼包含大量的 C# 代碼。 有什么好的方法可以優雅地處理這個單元測試問題嗎?

提前致謝!

這里有幾點需要說明:

  1. 當您測試的代碼執行多項操作(單元)時,根據定義,它是一個集成測試,因為它測試多個單元的集成(@Xerillio 的注釋)。
  2. 當您測試的代碼與基礎設施(文件系統、數據庫,在您的情況下Powershell和 VM 等)交互時,根據定義,它是一個集成測試。

您可以嘗試在C#中的單獨函數中提取少量代碼並對它們進行單元測試,從而確定這些工作並在Powershell中執行相同的操作(使用 Pester)。 但真正的問題是; 你想達到什么目的? 我假設您想確保您的應用程序現在可以工作並在未來繼續工作(不會倒退),在這種情況下,您可以更多地研究一種更端到端的測試方法。

  • 找到您的應用程序的最外點與您可以從測試中交互的內容,這樣您就可以測試堆棧的最大部分。
  • 檢查哪些部分可以自動測試而不會造成破壞(你提到“不可逆的方法”)
  • 使用單元測試框架在C# (如xUnit )中設置測試,表示明確的SetupTeardown階段,分別在測試前設置所需的一切並在測試后清理(請記住,測試可能默認並行運行,並且這不 go 與文件系統上的共享資源等)

這避免了僅僅因為您想對其進行單元測試而必須重寫代碼。 另一方面,提取純單元可以更輕松地測試這些特定單元。

暫無
暫無

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

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