MS Access中的单元测试

Ico*_*ood 14 testing ms-access vba unit-testing

我有一个Access数据库项目,有点大,试图跟踪我的想法.我知道这场比赛有点晚了,但迟到总比不对?

我用谷歌搜索但没有发现任何令我满意的东西.有没有像MS VBA这样的单元测试框架?

Ada*_*ips 10

我在Microsoft Access中做了一些相当广泛的开发,并且发现AccUnit可以很好地满足我的需求.作者的网站是德语(但包括一些英文翻译)但是一旦你掌握了基本概念,它就可以很容易地实现单元测试.

AccUnit在后端使用SimplyVBUnit 3.0来支持单元测试,但我发现在我的项目中实现的AccUnit VBA插件方法更简单.

安装

安装过程在作者的网站上描述,但主要包括以下两个项目:

  • 安装SimplyVBUnit 3.0(请注意,SourceForge上不再提供此功能,但AccUnit站点上提供了副本.)
  • 安装从上面的链接下载的AccUnit加载项.

基本用法

安装完成后,您会在菜单下找到一个新的子Tools菜单.单击AccUnit- > New Test- > Test Class with AccUnit-Features将新的测试类模块添加到项目中.

添加新的单元测试

您可以将模块命名为您想要的任何名称,因此这将取决于您希望如何进行测试.有些人喜欢一个测试类的每一个模块,以保持组织的事情,而其他人保持对事物的小项目简单使用单一类的单元测试.

单元测试类

示例代码有点神秘,但基本概念是,当您运行测试时,它将按顺序运行类中的所有Subs,并显示测试结果.我们做几个样本测试.

简单的例子

假设我们有一个函数(在标准模块中),如下所示:

Public Function GetLowestNumber(FirstNum As Double, SecondNum As Double) As Double
If FirstNum < SecondNum Then
    GetLowestNumber = FirstNum
Else
    GetLowestNumber = SecondNum
End If
End Function
Run Code Online (Sandbox Code Playgroud)

回到AccUnit测试类,我们现在可以做一个简单的测试来验证这个函数确实返回最小的数字.

Public Sub basUtility_GetLowestNumber_Test1()
    Assert.That GetLowestNumber(3, 4), Iz.EqualTo(3)
End Sub
Run Code Online (Sandbox Code Playgroud)

现在,在AccUnit工具栏上,单击按钮Run all tests.然后将出现测试窗口并显示测试结果.(如果你复制了上面的代码,它应该通过.):-)

在此输入图像描述

设计行测试

但是,使这个工具非常强大的是能够使用各种标准组合运行测试.在AccUnit中,他们称之为行测试.要使用它,只需调整函数以接受参数,并在函数上方的注释行中列出测试用例.

' AccUnit:Row(3,4,3).Name = "Smaller first"
' AccUnit:Row(4,3,3).Name = "Larger first"
' AccUnit:Row(3,3,3).Name = "Equal"
' AccUnit:Row(3.002,3.6,3.003).Name = "Decimals"
' AccUnit:Row(-3,3,-3).Name = "Mixed sign"
' AccUnit:Row(-7,-3,-7).Name = "Negative"
Public Sub basUtility_GetLowestNumber_RowTest(Num1 As Double, Num2 As Double, Expected As Double)
    Assert.That GetLowestNumber(Num1, Num2), Iz.EqualTo(Expected)
End Sub
Run Code Online (Sandbox Code Playgroud)

现在Run all tests再次单击,您将看到列出的结果.

行测试示例

请注意,各个行测试的结果嵌套在父测试下,并显示我们给出的友好名称以便于参考.

另请注意,其中一项测试失败.(在这种情况下,它是行测试预期结果中的故意错误,只是为了演示失败的测试看起来是什么样的.)双击失败的测试跳转到我可以进一步调试的代码.

摘要

我刚刚在这里分享了一些简短的例子,但是在AccUnit中还有许多其他工具和功能需要探索.(测试标签,忽略标志,代码模板等......)

希望这能为您提供Microsoft Access(或其他VBA产品)的特定单元测试选项的一些风格.还有其他好的选择,但对我来说,这提供了我所寻求的灵活性和简单性.


Han*_*sUp 4

SourceForge 上有免费的VBAUnit 。另外,商业vbUnit 3可能支持 VBA 以及常规 VB ...不过我不确定。