我在C#中使用了一些COM库,该库绑定到特定的硬件,没有它就无法工作。在开发/测试计算机上,我没有该硬件。使用库的方法如下所示:
using HWSysManagerLib;
bool ProcessBias(HWSysManager systemManager, string hwPath)
{
int handle = systemManager.OpenConfiguration(hwPath);
...
// some magic goes here
// return result
}
问题是,我可以模拟
HWSysManager
作为测试方法吗?仅在HWSysManager
中只有很少的方法,并且模拟它们的功能进行测试不会有问题。如果有可能的话,一个很小的例子将是如何模拟它的好方法。 最佳答案
您可以在此处使用适配器模式。
创建一个名为IHWSysManager
的接口
public interface IHWSysManager
{
int OpenConfiguration(string hwPath);
}
真正的实现类仅将工作委托给库:
public class HWSysManagerImpl : IHWSysManager
{
private HWSysManager _hwSysManager; //Initialize from constructor
public int OpenConfiguration(string hwPath)
{
return _hwSysManager.openConfiguration(hwPath);
}
}
使用代码中的接口,如下所示:
bool ProcessBias(IHWSysManager systemManager, string hwPath)
{
int handle = systemManager.OpenConfiguration(hwPath);
...
// some magic goes here
// return result
}
现在,您可以使用模拟框架模拟
IHWSysManager
接口,也可以自己创建存根类。