如何对仅管理员功能进行单元测试?

时间:2011-09-26 02:53:36

标签: visual-studio-2010 security unit-testing mstest

我的应用程序的设计是标准用户操作首先运行(并产生感兴趣的信息,即使用户无法继续),然后可选地提供相应的系统更改,这需要提升。如果用户选择继续,程序将重新运行自身,需要使用命令行开关进行提升,该命令行开关告诉它在工作流程中的哪个位置恢复。然后,新流程会回退旧流程,并根据用户的要求进行更改。

我的问题是我不知道如何针对必须进行特权调用的库方法编写单元测试,而不以管理员身份运行所有Visual Studio。我真的很想避免这样做,所以我很好用系统提示我输入部分或全部单元测试的凭据。但是目前作为标准用户,调用只是因为“System.Management.ManagementException:Access denied”异常而失败。

处理此问题的任何想法或经验除了提升会话的整个Visual Studio外?由于我使用的是内置单元测试,理想情况下,解决方案仍会在测试结果窗口中显示每个测试结果,但这不是必需的。

2 个答案:

答案 0 :(得分:0)

我不确定你在做什么需要管理员权限,但我建议在单元测试中你不应该实际调用那些方法,而是模拟调用这些方法的类。

通过这种方式,您可以确保使用正确的参数进行正确的调用,但您不会更改系统的状态。

答案 1 :(得分:0)

您可以使用LogonUser()模拟管理员帐户。

看看这个blog that’s trying to solve your problem

我喜欢这个codeproject implementation来更好地调用LogonUser。如果你稍微搜索一下,实际上有许多LogonUser()的代码项目例子。