Unit Testing World Wind

Unit Testing World Wind

I would like to float a proposal to start adding Unit Testing for any new features we add to World Wind. This isnt user or tester testing, unit tests is code and classes you add to a project to test that the code you write behaves as expected and can be tested and verified by automated tools. So if you check in changes a periodic build can build *and* test the code.

The pedantic form of writing tests is to write it *before* you write the actually code. I know it sounds odd, but think about it, you *have* thought through your classes and written some stuff down, you *do* know where you are gonna start, you *aren't* making it up as you go along are you? :) Writing tests before coding makes you stay honest with yourself.


 * Pros
 * Writing tests makes you think about what your code does and is it as simple as possible
 * Verifiable testing, CruiseControl.Net, Nant and many other tools can build and run the tests and give quick feedback about things that dont pass.
 * Regessions are (hopefully) spotted quickly
 * Produces better code.


 * Cons
 * Percieved increase in time it takes to write code. (Time spent answering questions and testing is not visible to developers)
 * Extra dependancy for the build.
 * Testing GUI is hard.
 * Separation of concerns is hard to start doing (Large event methods - see WorldWindow.cs - _OnMouseDown)


 * Tools
 * Unit Testing
 * TestDriven.NET
 * MB.Unit
 * Automated Builds
 * Nant
 * Cruise Control.Net