【发布时间】:2016-11-22 10:46:27
【问题描述】:
我编写了一个从设备制造商调用外部 DLL 方法的程序。此方法(大约 600 种)与设备建立以太网连接。 方法如下所示:
[DllImport("Libary.dll", EntryPoint = "methode1")]
public static extern short methode1(ushort Handl,
short a, short b, short c, short d, [Out, MarshalAs(UnmanagedType.LPStruct)] SpecialStruct1 e);
还有这个:
[DllImport("Libary.dll", EntryPoint = "methode2")]
public static extern short methode2(ushort Handl, short a, int b);
现在我想为我的代码编写单元测试并想模拟 DLL 方法。 DLL 是用 C 语言编写的,并且库附带了一个 C# 文件(参见上面的方法)。 我的方法如下所示:
public int myMethode1(ushort handl, List<object> parameters)
{
int a = (int)parameters[1];
string b = (string)parameters[2];
return Libary1.Methode1(handl, ref a, b);
}
你能告诉我如何为这个外部 DLL 编写一个 Mock 吗? 如何在没有设备的情况下测试我的方法? 巫师工具能帮到我吗?
【问题讨论】:
-
你尝试过任何模拟框架吗?如果是,请查看此stackoverflow.com/questions/20400734/…。有多种模拟框架可供选择。这是一个不错的列表nugetmusthaves.com/Tag/mocking
-
对接口后面的 dll 方法的调用进行抽象,以便对其进行模拟。
标签: c# unit-testing dll mocking nunit