> What would the comprehensive test that should be written first look > like for Calculator sum? A more comprehensive test might include type checking on the variables, etc. Anything that the Customer needs should be tested. I like to think of unit testing as a variant of design-by-contract. Before anything goes into the code base, the test/contract has to be changed to reflect new expectations. It's impossible to test every possible situation -- it's more important to define your behaviour in terms of tests. If you unit test before every new bit of code, you will have a comprehensive test of your expectations. This is, of course, much more useful than tests that ensure that the software works as expected in every possible situation. With the exception of things like flight avionics, most real world software has a more limited range of expectations.