【发布时间】:2016-11-29 15:03:37
【问题描述】:
我开始使用单元测试,以便更好地管理我正在处理的 VB6 中的旧代码。我开始在一个小型演示应用程序上进行 C# 单元测试以掌握它的窍门,然后开始使用 SimplyVBUnit(我仍然不精通)。
我立即注意到的是,如果在 VB6 中创建单元测试然后迁移我的代码,我将不得不在 .NET 端重新创建\迁移我的测试代码。我尝试通过 COM Interop 搜索一种方法来解决此问题,以查看是否可以在 .NET 的单元测试项目中显示我的 VB6 方法,但找不到好的信息来源。
我想问的是,这种方法是否可行?如果是这样,完成此操作的步骤是什么?
更新一:部分成功
四处搜索后,我发现我可以在 VB6 中创建一个 ActiveX dll 来传递一个类。为了对此进行测试,我使用名为“MyTestProject”的 ActiveX Dll 模板创建了一个新的 VB6 项目,并在其中创建了一个名为 CalculatorLib 的类,其代码如下:
Public Function Addition(ByVal operand1 As Long, ByVal operand2 As Long) As Long
Addition = (operand1 + operand2)
End Function
Public Function Subtract(ByVal operand1 As Long, ByVal operand2 As Long) As Long
Subtract = (operand1 - operand2)
End Function
Public Function Divide(ByVal operand1 As Long, ByVal operand2 As Long) As Long
Divide = (operand1 + operand2)
End Function
然后在 File -> Make MyTestProject.dll 下按 make 创建 dll
在 Visual Studio 2015 中创建一个新的单元测试项目。对此有一个命名约定,但对于此测试,我没有考虑到这一点。
在解决方案资源管理器中选择您的项目,然后右键单击并选择添加,然后选择引用。在 COM 选项卡中搜索您的 dll 并将其添加到您的项目中。 在测试中,我创建了一个名为 TestAdd 的(快速而肮脏的)测试方法:
[TestMethod]
public void TestAdd()
{
MyTestProject.CalculatorLib calculator = new MyTestProject.CalculatorLib();
int io = calculator.Addition(10, 30);
Assert.AreEqual(io, 20);
}
正如预期的那样,此测试失败,将 30 更改为 10 使测试通过。 快乐!
既然我能够做到这一点,我该如何测试我的模块和表单中的函数和子函数,而不必在 ActiveX dll 中的类中转换它们?
【问题讨论】:
标签: c# unit-testing vb6 interop simplyvbunit