【问题标题】:Are there any good TDD tools or resources for VB6?VB6 有什么好的 TDD 工具或资源吗?
【发布时间】:2009-01-22 01:44:15
【问题描述】:

是的,我知道我已经落后于时代,但我这里有一个古老的 VB6 编辑器应用程序,我相信没有人会很快升级到 .NET。它使用了几个第三方 DLL 工具,并且由于它仍在使用旧的 RichEdit 控件,因此我基本上可以仅使用这个工具来建立自己的 Bug 农场。

足够了,我正在尝试看看我是否可以使用 TDD,这样我就可以开始为我需要修复的每个行为/功能编写单元测试,所以迟早我可以拥有一个完整的回归测试套件这个工具。即使将来我们升级到 .NET,我认为我编写的大多数测试都应该有助于验证正确的行为,并且应该也可以升级到 .NET 版本,我猜。

一些基本的谷歌搜索将我发送到此工具电话simplyVBunit,但我找不到足够的指南等来帮助我入门,是的,我也不是那么精通 VB6 :(

  1. 那么有谁知道有什么好处 我使用 TDD 的工具/资源 对于这个 VB6 应用程序? [最好以后升级到 .NET,以防万一。]
  2. 或者我可以实际使用这些单元 .NET 的测试框架,即 NUnit, 等通过解决方法?
  3. 或者有没有更厉害的 如何完成这项工作?

谢谢:)

编辑:

我尝试过使用 vbunit,但我发现没有简单的方法可以将其添加到现有应用程序中,或者至少我不知道如何添加。因此我发现这个也可以玩,vb-lite-unit 和这个comunit。另外,有人说我们可以使用NUnit with vb6,但是这方面的资源更少。

【问题讨论】:

    标签: .net unit-testing vb6 tdd richedit


    【解决方案1】:

    我使用 SimplyVBUnit 获得了非常流畅的 TDD 体验。我认为代码附带的示例非常不言自明。

    您在启动时最初加载的表单包含该控件。然后在 Form_Load 子中你:

     AddTest New TestDifferentAsserts
    

    TestDifferentAsserts 是一个 vb 类。 它看起来像这样:

    Public Sub TestFloatCompareTolerance()
       ' we will use the default tolerance of 0.00001
       Assert.AreEqual 9#, 9.000001, "Should be equal!"
    
       ' The Expected value must be a Double or Single
       ' for the tolerance to be used in the comparison.
       Assert.AreEqual 9, 9.000001, "This will fail because we didn't use a float for the expected value."
    End Sub
    

    事实上,明天我将在我的计算机上重新加载 vb6,以便在我的计算机上使用 simplevbunit。

    [添加编辑]

    这是我在 VB6 中的项目资源管理器:

    Form1 是 simplevbunit 控件所在的位置。

    此项目的source code

    如果您有第三方控制,谁在乎。用门面包裹它们。然后从外观创建一个存根。

    如果您需要进一步的帮助,请发表评论。

    【讨论】:

    • 嗯,也许我太忙于四处寻找最好的 TDD 工具,而我并没有真正注意。我会回去重新审视这个工具。谢谢。
    • @Gutzofter,实际上我的应用程序包含一个带有大量 3rd 方 dll 的主 exe。在这种情况下如何设置测试?谢谢。
    • +1 我已经使用它好几个星期了,有时有问题,但对我帮助很大。
    • @dabblernl - 有什么问题。我还没有遇到任何问题。但最好在这里发表评论,让其他人了解它的弱点。
    • 我遇到的错误:每次测试后调用 FixtureTeardown 方法。在单步执行代码时在测试中间退出可能会导致出现丑陋的错误消息,有一次我需要重新构建测试项目以使其再次工作。
    【解决方案2】:

    VBUnit 在我的前客户的 VB6 项目中工作得很好。

    【讨论】:

    • 谢谢你的建议,我去试试:)
    • @Jim,有没有一种简单的方法可以像我上面提到的那样将 vbunit 添加到已经存在的应用程序中?我检查了教程,但在我看来,我必须一点一点地添加应用程序的各个部分?谢谢。
    • @melaos - 我不确定你的意思。自从我使用它已经有一段时间了,但我不记得将它添加到现有应用程序中有任何问题。事实上,我从一个没有单元测试的项目开始。
    • @Jim,我按照教程进行操作,我可以创建一个新的 vbtest 项目就好了。但是当我尝试将 vbtestframework 和夹具添加到我现有的项目中时,我无法让 vbrunner 工作。它声称 iSuite 为 UDF 类型,但找不到它。
    • @melaos 我不知道。我从来没有遇到过这样的问题。
    【解决方案3】:

    我的情况是,我们有一个巨大的 VB6 应用程序正在迁移到 .NET。迁移后的版本已经过全面单元测试。

    我们采用的方法是通过 COM 互操作从 .NET 对 VB6 应用程序进行单元测试。到目前为止,我们发现的主要优势是 VB6 开发人员最终会学习 TDD(以及它所暗示的所有内容):

    • 方法:先测试,后编码..
    • 架构:SoC、凝聚力、DRY、...
    • 技术:测试和模拟框架、IoC 容器...

    此解决方案极大地提高了迁移版本的代码质量,因为他们了解如何以使测试更容易的方式构建事物。此外,还有可能在 VB6 和 .NET 版本上使用相同的测试。

    不确定此解决方案是否针对您的问题过度架构。您应该评估是否适用或适合您的情况。

    问候。

    【讨论】:

    • @Benjamin 那么你用什么工具来做单元测试呢? NUnit?
    • 我已经使用 MbUnit 两年了,我对它很满意。我强烈推荐使用 MbUnit 2.4。在进入第 3 版之前稍等片刻;仍然有问题。
    • 对于 melaos 来说这听起来可能有点过头了,但它对我们其他人来说是有用的信息 - 感谢 Benjamin
    • @Benjamin 谢谢,@MarkJ 呵呵,只要有用,就回答吧:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 2010-10-03
    • 1970-01-01
    • 2012-03-17
    • 2010-11-11
    • 2011-11-28
    • 1970-01-01
    相关资源
    最近更新 更多