2009-10-13 124 views
5

我開始使用WiX(yay,而不是Installshield)來做一些安裝程序工作,我希望能做一些安裝程序的TDD。有誰知道一個簡單的方法來做到這一點?單元測試安裝程序

回答

6

聽起來我更像是一個集成測試,而不是TDD。

據我所知,本身沒有MSI測試套裝。

不過你可以嘗試這樣的事情(假設你有一個連續預防集成服務器):

  1. 成功構建後,乾淨的虛擬機上安裝MSI - 如果安裝失敗,做一些事情(郵件,車票,無論)
  2. 來看,你擁有的任何集成測試你的項目

之後,你可以肯定的是安裝的應用程序做什麼它應該。

+0

除上述之外,我強烈建議重複安裝以前的安裝,特別是在使用MSI(Windows安裝程序)時。通過這種方式,您可能會在用戶遇到此問題之前破壞Windows Installer(註冊表,文件等)並開發解決方案。 – 2012-11-05 22:17:19

0

對生成的MSI運行一些標準測試可能不是一個壞主意。 MSI文件支持許多不同的部署方案:管理員安裝來解壓縮文件,爲活動目錄進行廣告安裝,靜默安裝,維護安裝,卸載等等......也許這確實是一個想法,爲此創建一個小測試套件 - 也許它是即使是我所知道的WIX工具集也是如此。

但是,我認爲提供質量設置的第一步,也就是通過MSI驗證套件運行MSI。這些被稱爲ICE(內部一致性評估器),它們作爲* .cub文件與Windows Installer SDK交付。運行這些腳本往往會在MSI中暴露出許多糟糕的設計結構。此WIX工具稱爲smoke.exe。

+0

我認爲沒有必要明確地呼籲煙霧。 Light在darice.cub和mergemod.cub中運行冰測試(需要時) http://installing.blogspot.com/2006/04/msi-validation-in-wix.html – 2009-10-16 12:56:25

2

如果您創建了一些腳本文件來檢查文件是否在正確的位置,它是否會使您感到驚訝?我希望讓Perl或Python腳本

test_installer_wix.pl

msiexec /x product.msi # remove 
msiexec /i product.msi /silent # install 

ASSERT_EXIST_FILE(PFILE, 'productname/application.exe') 
ASSERT_REGKEY_EXISTS()