是否可以在测试套件中以特定用户帐户运行其中一个测试?我需要模拟一下用户权限问题。
是否可以在测试套件中以特定用户帐户运行其中一个测试?我需要模拟一下用户权限问题。
runas.exe /user:DOMAIN\someUser "nunit-console.exe somelibrary.dll"
我已将要点整合成一个答案,并提供了涉及步骤的概要。
我还添加了有关使用新的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-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”
正如我所提到的,NUnit3有一个新的“NUnit-Lite”运行器,可以将NUnit和您的测试打包成一个单独的EXE控制台应用程序。有关如何执行此操作的文档在此处:https://docs.nunit.org/articles/nunit/running-tests/NUnitLite-Runner.html
总体而言,与Windows任务计划程序配合使用时,我更喜欢NUnit-Lite单个EXE方法,而不是NUnit-Console方法。
精通PowerShell和批处理文件的人可能更喜欢RunAs方法。