【问题标题】:How to Unit test VB6 code in .NET如何在 .NET 中对 VB6 代码进行单元测试
【发布时间】: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


    【解决方案1】:

    实际上只有两种选择:

    1. 用 C# 重新编写单元测试。
    2. 将 VB6 单元测试公开为 ActiveX DLL 函数。

    在任何一种情况下,您都需要编写某种形式的 C# 代码。如果 VB6 中的单元测试仍在使用,那么我建议您使用第二个选项,这样您就不必担心维护两套源代码。

    在我工作的地方,我们使用 C# 进行所有单元测试,因为我们希望尽可能地远离遗留产品。

    【讨论】:

    • 感谢@vbguyny 的回复。我确实认为在 C# 中进行测试是要走的路。我们目前没有实施单元测试。这是我试图在项目中引入的东西。我正在阅读“单元测试的艺术:C# 中的示例”和“有效地使用遗留代码”,因为我对这些主题相当陌生。因此,您可以提供任何示例或信息来源,我们将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 2016-05-04
    相关资源
    最近更新 更多