Rachel Davies posts about the idea of an Agile Deployment. In an Agile deployment, you have unit tests to make sure that the production system on which your product is installed meets all the required hardware and configuration needed. That solves you a lot of trouble, especially is there is a different team in charge on the production server.
There's a definite possibility that people are already doing this, though personally I never did (just because I didn't think of such a brilliant idea). What would such unit tests entail? A lot of grudge work, for sure. Especially for complex systems which demand various configurations to appear. I'd suggest to implement the tests, not specifically as unit tests, but using existing automated tools. Here's a list of suggestions:
- Create an installer project in VS.NET. An installer can have various prerequisites pertaining to the operating system involved and so on. Create an empty installer project with just the prerequisites and no output. If it fails to run on the production system, you know you forgot something. However, there's only so much you can check in an installer.
- You can use an automated build tool such as FinalBuilder and just create lots of "IF" tasks inside it that fail if what you expect is not there. This has the advantage that there are many built in checks in place for you to just invoke. You can also have various actions taken if something is not well.
- Create your own custom tool that checks things. You've got two choices here: make it generic enough to be easily customizable for any project(longer time to make, shorter time in the long run) or make one ad-hoc for the specific project.(short time - but re-inventing the wheel every time).
- Use a third party tool made specifically for this purpose. Preferably one that can be run along with your unit tests from the command line. Do you know of any?