2016-11-29 40 views
0

爲了更好地管理我正在處理的VB6中的這些舊代碼,我開始使用單元測試。我從一個小型的演示應用程序開始進行C#單元測試以掌握它,然後開始使用SimplyVBUnit(我仍然不熟練)。如何在.NET中單元測試VB6代碼

我馬上注意到,如果創建單元在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 

然後按使下文件創建DLL - > Make MyTestProject.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使試驗合格。 JOY!

所以,現在我能夠做到這一點如何測試我的模塊和窗體中的函數和子,而不必在ActiveX DLL的類中轉換它們呢?

回答

0

其實只有兩個選擇:

  1. 重新寫在C#單元測試。
  2. 將您的VB6單元測試公開爲ActiveX DLL函數。

無論哪種情況,您都需要編寫某種形式的C#代碼。如果VB6中的單元測試仍在使用,那麼我建議您使用第二個選項,這樣您就不必擔心維護兩組源代碼。

在哪裏工作,我們在C#中進行了所有的單元測試,因爲我們希望儘可能遠離傳統產品。

+0

感謝回覆@vbguyny。我確實認爲用C#進行測試是一種可行的方法。我們目前沒有實施單元測試。這是我試圖在項目中介紹的內容。我正在閱讀「單元測試的藝術:使用C#中的示例」和「使用遺留代碼有效地工作」,因爲我對這些主題相當陌生。因此,您可以提供的任何示例或信息來源將不勝感激。 – BMFS

相關問題