我想将一段使用Windows Impersonation API的代码包装成一个整洁的小助手类,并且像往常一样,我正在寻找一种先测试的方法。但是,虽然WindowsIdentity是托管类,但实际执行登录所需的LogonUser调用是另一个用户是advapi32.dll中的非托管函数。
我认为我可以通过为我的帮助类引入一个接口来解决这个问题,以便在实现中使用和隐藏P / Invoke调用,但测试该实现仍然是个问题。你可以想象,实际在测试中进行模拟可能会有点问题,因为用户实际上需要在系统上存在。
答案 0 :(得分:12)
指南:不要测试你没有写过的代码。
您不应该担心WinAPI实现不起作用(很可能它按预期工作)。
您应关注的是测试“接线”,即您的代码是否进行了正确的WinAPI呼叫。在这种情况下,您只需要模拟界面并让模拟框架告诉您调用是否使用了正确的参数。如果是的话,你已经完成了。
答案 1 :(得分:0)
我不确定我是否关注你..你不想自己测试PInvoke(你没有写它)所以你想测试包装类是否正常运行?
那么,只需在包装器类中创建你的接口并对其进行测试吗?
在需要设置用户等方面,我认为这将是你需要咬的子弹。模拟包装器PInvoke调用似乎很奇怪,因为你只需要确认并且接口存在:)