簡體   English   中英

如何在具有特定權限的用戶下運行一個 NUnit 測試

[英]How to run one NUnit test under a user with certain privileges

是否可以在特定用戶帳戶下的測試套件中運行其中一項測試? 我需要以某種方式模擬用戶權限問題。

runas.exe /user:DOMAIN\someUser "nunit-console.exe somelibrary.dll"

我已將關鍵點合並為一個答案,並提供了所涉及步驟的概述。

我還添加了有關使用新的 NUnit 3“NUnit-Lite”單 exe 測試 + 運行程序以及使用 Windows 任務計划程序作為在用戶帳戶下運行測試的簡單機制的信息。

Darin Dimitrov 的回答是關於金錢的整體,但評論中隱藏了一些很好的觀點,有些人可能需要更多關於如何設置的指導。 另外,當他寫下他的答案時,NUnit-Lite 不可用。

第 1 部分:將需要在特定用戶帳戶下運行的測試放入它們自己的單獨程序集中。 大致步驟:

  • 例如,在 Visual Studio 中,您將選擇 File/New Project,然后選擇 NUnit 項目模板(在 Framework 或 .NET Core 中,視情況而定),適當地命名項目。

  • 將涉及的特定測試的代碼移動到您剛剛創建的新程序集中。 使用您在 Visual Studio 中登錄的帳戶獲取要構建和運行的程序集,並提供預期結果。 暫時不要擔心其他用戶帳戶。

  • 選項:使用 NUnit-Lite 單個 EXE 測試運行器打包方法,NUnit3 中的新方法,如此處所述: https ://docs.nunit.org/articles/nunit/running-tests/NUnitLite-Runner.html

第 2 部分:將測試程序集部署到您將運行它的位置,以便能夠使用 nunit-console.exe 程序在程序集中運行測試。

  • 有關運行時要求,請參閱 NUnit 文檔。

第 3 部分:設置以在特定用戶帳戶下執行 nunit-console 或您的 NUnit-Lite 單個 EXE。

  • 選項 1:使用“runas”方法 runas.exe /user:DOMAIN\\someUser "nunit-console.exe somelibrary.dll" 或 runas.exe /user:DOMAIN\\someUser "MyTestsAndNUnitLiteRunner.exe"

  • 我相信你會啟動一個命令提示符; 在 Windows 10 中,它將是開始/(鍵入 CMD),然后您將右鍵單擊“命令提示符”選項,並選擇“以不同用戶身份運行”,然后輸入特定用戶的用戶 ID 和憑據。

  • 在某些版本的 Windows 10 中,您不會看到“以不同用戶身份運行”選項。 如果發生這種情況,請參閱這篇文章: https : //superuser.com/questions/1045158/how-do-you-run-as-a-different-user-from-the-start-menu-in-windows-10

  • 選項 2:使用 Windows 任務計划程序設置在所需用戶帳戶下運行的作業。 在任務設置過程中,您將需要用戶帳戶登錄名和憑據。 一旦設置了計划任務,您只需右鍵單擊它並選擇“運行”即可立即運行它。 命令行將類似於:“nunit-console.exe” somelibrary.dll 或者,對於 NUnit-Lite:“MyTestsAndNUnitLiteRunner.exe”

在任務設置中,如果所涉及的路徑中有空格,您可能需要使用文件夾名稱和引號。

第 4 部分:使用您選擇的方法運行測試程序集,並查看輸出。

  • 有關測試輸出發送位置及其格式的詳細信息,請參閱 NUnit 文檔。
  • 根據我的經驗,NUnit 編寫了 XML 結果文件,我可以查看這些文件以查看測試結果。 XML 文件是人類可讀的,足以使用文本編輯器查看和理解。

第 5 部分:迭代直到成功; 調整測試代碼並重復直到成功。

  • 有時事情第一次就能完美運行,但往往不是。
  • 如果您將 Visual Studio 構建設置為將更新的、重建的測試程序集部署到您的測試運行器區域,您只需手動觸發“計划”任務。

就個人而言,我更喜歡 Windows 任務計划程序方法而不是 runas 方法。 一旦設置好,對我來說,迭代測試代碼並重試測試會更快更容易。

正如我所提到的,NUnit3 有一個新的“NUnit-Lite”運行器,可以很容易地將 NUnit 和您的測試打包到一個單一的 EXE 控制台應用程序中。 關於這樣做的文檔在這里: https : //docs.nunit.org/articles/nunit/running-tests/NUnitLite-Runner.html

總的來說,我更喜歡 NUnit-Lite 單一 EXE 方法,而不是 NUnit-Console 方法,結合 Windows 任務計划程序。

對 PowerShell 和批處理文件非常熟悉的人可能更喜歡 RunAs 方法。

暫無
暫無

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

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