如何在具有特定权限的用户下运行一个NUnit测试

4

是否可以在测试套件中以特定用户帐户运行其中一个测试?我需要模拟一下用户权限问题。

2个回答

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

是的,我知道如何在特定用户下运行所有测试。但是那个在dll中的呢? - Leonid
1
@Leonid,我认为你无法在不同的账户下运行单个测试。你可以将这个特定的测试外部化到一个单独的程序集中。 - Darin Dimitrov

0

我已将要点整合成一个答案,并提供了涉及步骤的概要。

我还添加了有关使用新的NUnit 3“NUnit-Lite”单个exe测试+运行程序的信息,以及使用Windows任务计划程序作为在用户帐户下运行测试的简单机制的信息。

Darin Dimitrov的答案总体上是正确的,但有一些优秀的观点被埋在评论中,有些人可能需要更多的指导来设置这个。此外,当他撰写答案时,NUnit-Lite尚未推出。

第1部分:将需要在特定用户帐户下运行的测试放置在它们自己的单独程序集中。大致步骤:

  • 例如,在Visual Studio中,您可以选择文件/新建项目,并选择NUnit项目模板(在Framework或.NET Core中,视情况而定),适当命名项目。

  • 将涉及特定测试的代码移动到您刚创建的新程序集中。确保程序集能够构建和运行,并在Visual Studio下以您登录的帐户给出预期结果。暂时不要担心其他用户帐户。

  • 选项:使用NUnit3中新文档化的NUnit-Lite单个EXE测试运行器打包方法:https://docs.nunit.org/articles/nunit/running-tests/NUnitLite-Runner.html

第二部分:将测试程序集部署到您将运行它的位置,以便能够使用nunit-console.exe程序运行程序集中的测试。

  • 请参阅NUnit文档以获取运行时要求。

第三部分:设置执行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),然后右键单击“命令提示符”选项,并选择“以不同的用户身份运行”,然后输入特定用户的userID和凭据。

  • 在某些版本的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”

在任务设置中,如果涉及到路径有空格,您可能需要使用文件夹名称并使用引号。
第四部分:使用您选择的方法运行测试组件,并查看输出。
请参阅 NUnit 文档,了解测试输出发送的具体位置和格式。
根据我的经验,NUnit 编写了 XML 结果文件,我可以查看以查看测试结果。XML 文件足够人类可读,可以使用文本编辑器查看并理解。
第五部分:反复迭代直至成功;调整测试代码并重复操作,直至达成目标。
有时候事情一开始就能完美地运行,但通常不是这样。
如果您将 Visual Studio 构建设置为将更新后的、重新构建的测试组件部署到测试运行区域,则可以手动触发“计划任务”。
就个人而言,我更喜欢 Windows 任务计划程序方法而不是 runas 方法。一旦设置好,对我来说,迭代测试代码并重试测试更快更容易。

正如我所提到的,NUnit3有一个新的“NUnit-Lite”运行器,可以将NUnit和您的测试打包成一个单独的EXE控制台应用程序。有关如何执行此操作的文档在此处:https://docs.nunit.org/articles/nunit/running-tests/NUnitLite-Runner.html

总体而言,与Windows任务计划程序配合使用时,我更喜欢NUnit-Lite单个EXE方法,而不是NUnit-Console方法。

精通PowerShell和批处理文件的人可能更喜欢RunAs方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接