我一直在经历一个叫做SimplyVBUnit的VB6应用程序。现在最重要的是写这个的人已经发布了它的源代码,我一直在试图弄清楚他们是如何实现VB6的单元测试功能的,但到目前为止我一直在努力去理解代码的工作原理。VB6“编译器服务”等效
基本上我希望有人能向我解释的是,如何创建一个VB6的单元测试框架(据我所知),它没有实现类似于“编译器服务”或由。净?
如果没有这些功能,我无法理解如何在运行时动态调用方法/对象/无论什么情况,并观察结果。任何机会有人可以提供一些输入?
我一直在经历一个叫做SimplyVBUnit的VB6应用程序。现在最重要的是写这个的人已经发布了它的源代码,我一直在试图弄清楚他们是如何实现VB6的单元测试功能的,但到目前为止我一直在努力去理解代码的工作原理。VB6“编译器服务”等效
基本上我希望有人能向我解释的是,如何创建一个VB6的单元测试框架(据我所知),它没有实现类似于“编译器服务”或由。净?
如果没有这些功能,我无法理解如何在运行时动态调用方法/对象/无论什么情况,并观察结果。任何机会有人可以提供一些输入?
我一直在旧VB6应用程序中使用SimplyVBUnit。这很棒。我有超过100个测试。但我不得不大幅改变它以将其与我的应用程序集成(例如,以便我可以进入帮助菜单并运行单元测试。具体而言,我将UI与实际实现分开,因此它与UI无关。源代码实际上并没有那么复杂(一旦你了解这个人正在做什么)VB6没有任何反射,TLBINF32.DLL只能在外部DLL上工作,因此如果你想将SimplyVBUnit集成到你的应用程序中,你不能接受。方法
您在从ITestCase继承一个ActiveX DLL创建单元测试类你实现一个名为的runTest方法中的方法,您具备以下条件:。
Private Sub ITestCase_RunTest(ByVal TestNum As Long, TestName As String, ExpectErrNum As Long, EndOfTests As Boolean)
Dim objTestNum As New TestNumGenerator
Select Case TestNum
Case objTestNum.NextNumber
TestName = "Instantiate an APDebit Object"
Test_InstantiateAPDebitObject
Case objTestNum.NextNumber
TestName = "Create an APDebit record."
Test_CreateAPDebit
Case objTestNum.NextNumber
TestName = "Load an APDebit record."
Test_LoadAPDebit
Case Else
EndOfTests = True
End Select
End Sub
然后,您将您的类传递到UnitTest框架中,并调用其上的RunTest方法。
如果您希望从实施中断开UI,我可以共享代码。
你说源已被释放 - 那么为什么你不通过它来找出?请注意,反射对于单元测试框架来说可能比动态编译更重要。 –
请重新阅读问题。我曾尝试阅读源代码,但正如您可以想象的那样,它非常复杂,我一直无法理解它是如何工作的。显然,如果我在这里得不到合理的答案,我会继续尝试自己去解决问题,但到目前为止,没有运气! –
@Maxim:我认为如果你把它放大一些,将会是一个更有趣的问题,如“你如何开始陷入困惑你的代码库?”。解释你已经试过的东西,你有多远,等等。你是否构建了代码并使它在调试器中工作?你是否在执行单元测试时遇到了一个突破点,并查看了堆栈跟踪?代码中的哪一点*会让你感到困惑? –