Pab*_*blo 1 c# nunit unit-testing mocking
我在我的C#中使用了一些COM库,它绑定到特定的硬件,没有它就无法工作.在开发/测试计算机上,我没有那个硬件.使用库的方法如下所示:
using HWSysManagerLib;
bool ProcessBias(HWSysManager systemManager, string hwPath)
{
int handle = systemManager.OpenConfiguration(hwPath);
...
// some magic goes here
// return result
}
Run Code Online (Sandbox Code Playgroud)
问题是,我可以模拟HWSysManager测试方法以及如何?只有很少的方法HWSysManager,模拟它们的测试功能不会有问题.如果可能的话,一个很小的例子就是如何嘲笑它.
您可以在此处使用适配器模式.
创建一个名为的接口 IHWSysManager
public interface IHWSysManager
{
int OpenConfiguration(string hwPath);
}
Run Code Online (Sandbox Code Playgroud)
真正的实现类只是将工作委托给库:
public class HWSysManagerImpl : IHWSysManager
{
private HWSysManager _hwSysManager; //Initialize from constructor
public int OpenConfiguration(string hwPath)
{
return _hwSysManager.openConfiguration(hwPath);
}
}
Run Code Online (Sandbox Code Playgroud)
在代码中使用这样的接口:
bool ProcessBias(IHWSysManager systemManager, string hwPath)
{
int handle = systemManager.OpenConfiguration(hwPath);
...
// some magic goes here
// return result
}
Run Code Online (Sandbox Code Playgroud)
现在您可以IHWSysManager使用模拟框架模拟您的界面,或者您可以自己创建存根类.
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |