2009-11-24 33 views
13

我正在處理一個Excel VBA宏,它將採用一些excel文件,擦洗/清理它,並生成一張工作簿和兩張工作表 - 工作表1是原始的「髒」文件,工作表2是乾淨地清理過的文件。如何在VBA Excel宏中設置單元測試?

由於我們現在有10種不同的格式,並且在40+的路上......我想爲給定的一組文件保存這個輸出,然後編寫一個單元測試,它接受原始輸入,運行我們的宏,然後將宏的輸出與我們已保存的預期輸出進行比較。

然後隨時後來在路上,當我們做保養,我們可以快速,輕鬆地運行我們的單元測試,以確保我們沒有破壞任何東西已經奏效。

這是我第一次使用VBA。我搜索框架或插件,並找不到太多的幫助。我確實找到了一個可以比較2個完整excel電子表格的函數 - 所以我把這個部分放下了。但是現在我需要弄清楚如何實際編寫和執行這個單元測試。編寫單元測試應該非常簡單 - 但我該如何執行它?我不想在電子表格上放一個按鈕,指出'運行單元測試'...在VBA/Excel中有沒有辦法運行一個任意函數,所以我可以說右鍵單擊我的UnitTest函數,並執行'跑'?

有關我的單元測試計劃的任何額外反饋也將不勝感激。再次感謝。

回答

9

如果是我,我會創建一個引用要測試的片第二電子表格的鏈接。 (轉到工具>參考>瀏覽)這個新的工作簿可以包含所有您想要的測試,而不必弄髒主工作簿。如果你需要的話,這也可以讓你爲自己建立一個界面。

作爲一個側面說明,如果你想隱藏Excel宏菜單程序,但仍然可以訪問他們,在你的模塊放頂:

Option Private Module 

然後讓所有你想要的程序能夠使用「公共」。然後可以從即時窗口調用它們(VBE中的ctrl-g),但它們不會在宏列表中列出。

但是,如果你把你的單元測試分開(或許你應該),那麼你真的不擔心公共/私有模塊。

+0

感謝您的選項私人模塊提示.. – peege 2014-10-28 07:57:13

5

已經很多年沒有看着它,但vbaUnit用來工作好...

+0

謝謝,已經知道它,但不能確定我應該如何比較牀單。謝謝大家 – dferraro 2009-12-07 16:06:53

8

Rubberduck是一款免費的開源VBE插件,包含IDE集成的單元測試框架,可用於大多數主要Office產品。

  1. 下載並安裝latest release
  2. 打開您的VBA項目所在的Excel工作簿。
  3. 轉至工具>>參考並添加對Rubberduck的引用。
  4. 添加一個新的標準模塊。
  5. 添加'@TestModule屬性和創建的Rubberduck.AssertClass

    `@TestModule 
    
    Private Assert As Rubberduck.Assert 
    
  6. 開始編寫測試實例。標記爲'@TestMethod屬性的任何Public Sub都將被Test Explorer發現並運行。

    '@TestMethod 
    Public Sub OnePlusOneIsTwo() 
        Assert.AreEqual 2, Add(1,1) 
    End Sub 
    

Unit Test Explorer

欲瞭解更多信息,請參閱Unit Testing page of the project's wiki

免責聲明:我是該項目的開發人員之一。

+0

偉大的信息。對於它的價值,鏈接wiki上的說明比這裏給出的說明更新。 – epotter 2017-10-31 17:49:39

相關問題