2009-10-13 47 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()