2010-12-21 31 views
3

我正在用WIX構建合併模塊。調用WIX工具從* .wxs文件生成合並模塊的批處理文件由我的日常構建運行。如何對WIX合併模塊進行單元測試?

我想弄清楚如何自動化這些合併模塊的測試。我想測試的是,合併模塊是否安裝所需的文件,文件的版本是否正確等。

我的一個想法是編寫一個腳本(可能是VB腳本)來安裝合併模塊在一個臨時的位置,並檢查它是否正確安裝了一切。但是,我不確定這是否是一種正確的方法。

是否有任何標準的方式來編寫合併模塊的單元測試?任何關於如何去做的想法都是值得歡迎的。

回答

1

我經常想到這個,但沒有拿出任何我喜歡的東西。首先,我會稱這個集成測試不是嚴格的單元測試。其次「正確文件」和「正確版本」的問題很難界定。

我常常想說WiX/MSI只是定義安裝程序要做什麼的數據。它在本質上是聲明性的,因此根據定義是正確的。想要創建另一組交叉檢查安裝程序實現的數據是很有吸引力的,但是第一個數據集尚不能代表什麼呢?有時很難維護哪些文件進入應用程序,而僅用於維護第二個文件列表。

我繼續思考這個問題,並想知道是否有一個合理的方法,但在這一點上我只是做我的正常MSI驗證。

+0

你說得對,WIX文件本身就是設置應該是什麼樣的聲明,同一事物的任何其他表示都是多餘的。你能解釋你如何做MSI驗證? – 2010-12-29 07:36:32

+0

WiX通常會在構建結束時自動進行驗證,除非您禁止該驗證。閱讀http://msdn.microsoft.com/en-us/library/aa372477(VS.85).aspx – 2010-12-29 15:06:14

+0

另請閱讀http://blog.deploymentengineering.com/2009/02/msi-tip-authoring-ice-使用-C-dtf.html – 2010-12-29 15:06:44

1

您可以嘗試使用腳本或其他可以完成這項工作的小控制檯程序,就像您所建議的一樣。

通過構建過程,您還可以構建僅使用合併模塊的基本設置。你的腳本可以安裝它,運行其他腳本或控制檯應用程序,它將檢查所有文件是否在位,是否有正確的版本,是否安裝了所有註冊表項等。在收集完所有輸出後,您的主腳本將只是卸載一切。您也可以在卸載後運行檢查程序,以確保一切都沒有了,並且卸載能夠正常工作。例如,如果您將自定義操作設置爲安裝和卸載,我會推薦這種方法。

理想情況下,整個安裝/卸載過程應該在單獨的機器或虛擬機上完成,以避免搞亂構建服務器。

對於所有這些腳本,您都有一些工作要做,但是一旦擁有了它,您就可以對其他任何未來的合併模塊項目或簡單的安裝項目進行小小更改。

希望這會有所幫助,

阿德里安。

3

當你測試一個安裝程序,主要目標是驗證

  1. 當安裝MSI文件,msiexec報告成功(即返回碼0)。
  2. 運行安裝程序後,您的應用程序可以啓動並按預期工作。

第一點應該很容易做到,但如果您想保持測試自動化,您只能測試非交互式安裝。下面是一個例子,說明如何從批處理文件或命令行執行該操作:

msiexec /i myinstaller.msi /passive || echo ERROR: non-zero return code! 

第二點有點複雜。我認爲實現這一目標的最佳途徑是建立一些集成測試到應用程序,並調用安裝後,這些測試:

"c:\program files\mystuff\app.exe" /selftest || echo ERROR: non-zero return code! 

在你的情況,你正在測試一個合併模塊而不是整個安裝程序。可以使用相同的方法。你只需要做額外的工作來構建一個「自測」應用程序和它的安裝程序,它會消耗你的合併模塊。

相關問題