This is a subjective question and much more on ServerFault lines, but I will answer anyway. I like Hyper-V or ESX, but I'm sure everything is in order. Not sure if there is one βbest,β and I will question anyone who claims to be there.
You want something that is a native hypervisor (Hyper-V, ESX, XenServer notVirtual PC / Server, KVM, VirtualBox or GSX), supports snapshots and has an automation level suitable for how difficult you control it. If you want to integrate with Microsoft Team Foundation Server Test Lab technology, you will also have to use SCVMM (System Center Virtual Machine Manager), which means using Hyper-V.
At my last job, we had 50+ ESX-based servers with a basic snapshot. We had build automation that called the VSphere API before resetting the virtual machine as the base snapshot and turned on. This ensured that every assembly starts from the machine in the same clean state. We have spent more than 100,000 national teams a year on this infrastructure.
I also did similar things using HyperV. Hyper-V has a WMI-based management API that uses RPC and is a bit uglier to solve the then VSphere, but it works. The VSphere API is web-based and has a client object model for .NET that is much easier to use.
For testing, you want to be able to programmatically install a virtual machine in a specific state, deploy the installer to it, and then run the integration test suites.
source share