I am constructing a prototype for robot using Test driven development ( C#, Console Application). First, I have created a test project and a class RobotTest. Here, I have written test methods to fail and to pass I construct the Robot class. Then, I have created a class RobertPrototype in which Robot class object is created to use methods in the Robot class. Along with that, I added some other methods (to parse input) in RobertPrototype.
I don’t know if this is the way I have to follow while developing through TDD. Do I have to include all methods in Robot class itself ?
Please guide me. Thanks.
I don’t understand the question. you already said your tests are in a separate project and that you are writing a separate client class
RobotPrototypethat uses theRobotclass.At this point it seems like a reasonable design.
I think you’re confusing yourself by writing bits of all of your classes for each bit of “working” test that you write for some Robot class method. This is not the way to think about TDD. It DOES NOT mean write a failing test to create a Robot object, then write a shell of a Robot constructor, write a shell of a class that uses a robot, write a shell of a client that uses a RobotPrototype. Then write a failing test, then write an empty Robot method, write RobotPrototype code that uses that method, write client code that uses what the RobotPrototype uses. no, no, no.
Each class in your robot design will have it’s own corresponding Test class. Each method in each class will have it’s own corresponding method in it’s corresponding test class. The TDD cycle is performed on a method-by-method basis.
Try this:
Robotfunctionality to do something, then you can start writing some Robot-using code (RobotPrototypeclass).Given the above, the points to take away are:
You wrote complete “core” methods first. Each method has working tests when you’re done.
As write new code using existing code, you know that existing code works because it’s been tested. And, your new code has it’s own tests.
Thus your application is built up upon layers of tested code.
As you write and re-write, you constantly re-run your tests. And periodically make sure you rerun ALL of them. If a previously working test fails, well you know you have a problem and you know where to look first.
As much as practicable every class has a test class and every method has (at least one) test method.