当前位置:  开发笔记 > 编程语言 > 正文

是否可以对进行P/Invoke调用的类进行单元测试?

如何解决《是否可以对进行P/Invoke调用的类进行单元测试?》经验,为你挑选了1个好方法。

我想将一段使用Windows Impersonation API的代码包装成一个整洁的小助手类,并且像往常一样,我正在寻找一种先测试的方法.但是,虽然WindowsIdentity是托管类,但实际执行登录所需的LogonUser调用是另一个用户是advapi32.dll中的非托管函数.

我想我可以解决这个问题,为我的助手类引入一个接口,以便在实现中使用和隐藏P/Invoke调用,但测试该实现仍然是个问题.并且你可以想象,实际上在测试中执行模拟可能有点问题,因为用户实际上需要在系统上存在.



1> Gishu..:

指南:不要测试您未编写的代码.
您不应该担心WinAPI实现不起作用(很可能它按预期工作).您应关注的是测试"接线",即您的代码是否进行了正确的WinAPI呼叫.在这种情况下,您只需要模拟界面并让模拟框架告诉您调用是否使用了正确的参数.如果是的话,你就完成了.

创建IWinAPIFacade(使用相关的WinAPI方法)并实现CWinAPIFacade.

编写一个插入IWinAPIFacade模拟的测试,并验证是否进行了适当的调用

编写测试以确保创建CWinAPIFacade并将其作为默认值插入(在正常运行中)

实现CWinAPIFacade,它只是盲目委托给Platform Invoke调用 - 不需要自动测试这一层.只需进行手动验证即可.希望这不会经常改变,没有任何破坏.如果你发现它将来发生这种情况,可以通过一些测试来阻止它.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有