Issues and Theory for Unit Testing of Object-Oriented Software