是否可以在特定用户帐户下的测试套件中运行其中一个测试?我需要以某种方式模拟用户权限问题。
答案 0 :(得分:4)
runas.exe /user:DOMAIN\someUser "nunit-console.exe somelibrary.dll"
答案 1 :(得分:0)
我将关键点合并为一个答案,并概述了其中涉及的步骤。
我还添加了有关使用新的NUnit 3“ NUnit-Lite”单exe测试+运行程序以及将Windows Task Scheduler作为一种简单的机制来以用户帐户运行测试的信息。
>达林·迪米特洛夫(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
第2部分:将测试程序集部署到您将要运行它的位置,以便能够使用nunit-console.exe程序在程序集中运行测试。
第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中,它将是Start /(键入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 Task Scheduler设置在所需用户帐户下运行的作业。在任务设置过程中,您将需要用户帐户登录名和凭据。设置计划任务后,您可以右键单击它,然后选择“运行”以立即运行它。命令行将类似于以下内容: “ nunit-console.exe” somelibrary.dll 或,对于NUnit-Lite: “ MyTestsAndNUnitLiteRunner.exe”
在任务设置中,如果涉及的路径中包含空格,则许多人需要使用文件夹名称和引号。
第4部分:使用您选择的方法运行测试程序集,并检查输出。
第5部分:迭代直到生效;调整测试代码并重复执行直到成功。
就个人而言,我更喜欢Windows Task Scheduler方法而不是runas方法。 对我来说,设置完成后,可以更快速,更轻松地迭代测试代码并重试测试。
正如我所提到的,NUnit3具有一个新的“ NUnit-Lite”运行器,可以很容易地将NUnit和您的测试打包到一个EXE控制台应用程序中。有关此操作的文档位于:https://docs.nunit.org/articles/nunit/running-tests/NUnitLite-Runner.html
与Windows Task Scheduler结合使用时,相对于NUnit-Console方法,总体上首选NUnit-Lite单个EXE方法。
对PowerShell和批处理文件非常方便的人们可能更喜欢RunAs方法。