我正在尝试使用虚拟机环境为我们的应用程序设置自动化测试。
我想要的是类似以下情况:
如果重要的话,我正在使用TeamCity。 对于虚拟机,我们使用VirtualBox,但如果需要,我们可以对任何其他人开放。
是否有任何应用程序/套件可以管理此方案?
如果没有,那么我会自己编写代码,应该很简单但是我不确定的唯一部分是处理虚拟机。
我需要做的是让VM在测试后自行关闭并恢复到之前的快照,因为我希望它在下一个测试中处于已知状态。
任何指针?
答案 0 :(得分:11)
我有类似的设置正在运行,我选择使用Vagrant作为我们的开发人员用于规范化开发环境的同样的事情。
虚拟机的初始状态是使用puppet编写的,但是我们没有在每次测试中从头开始运行部署脚本,每天只运行一次。
你可以使用木偶/厨师来做所有事情,但是对于VM上的所有其他操作,我们会使用Fabric脚本,因为它们也用于实际部署,并且以某种方式使我们更好地工作。总之,脚本看起来如下所示:
vagrant up # fire up the vm, and run the puppet provisioning tool
fab vm run_test # run tests on vm
fab local process_result # process results on local shared folder
vagrant destroy # destroy the vm
优势在于您的开发人员还可以使用vagrant来模仿您的生产环境,而无需自己处理(即数据库设置的更改会同步到您的所有开发人员vm的任何位置)并且相同的脚本可以是也用于生产。
答案 1 :(得分:4)
VirtualBox确实有COM API。我没有经验,但可能会使用它。一种选择是让TeamCity触发脚本来执行此操作。我建议从NAnt开始(由TeamCity原生支持),并在必要时执行PowerShell。
答案 2 :(得分:2)