12

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

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

一些基本的谷歌搜索将我发送到这个工具调用simpleVBunit,但我找不到足够的指南等来让我开始,是的,我对 VB6 也不是那么精通 :(

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

谢谢 :)

编辑:

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

4

3 回答 3

10

我使用 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 控件所在的位置。

该项目的源代码

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

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

于 2009-01-22T06:36:35.153 回答
6

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

于 2009-01-22T01:50:46.430 回答
6

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

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

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

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

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

问候。

于 2009-01-22T10:44:03.093 回答