This has been in my opinion lately, as I can clearly see the benefits of TDD. I can easily understand how tests can manage a good design if the developer has an idea of what functionality is. This may be an oversimplified statement, but from all that I read, TDD stands for the fact that you do not have a design that goes beyond the architecture of your project and the choice of structure. In this case, Id should guess that even the most hardcore TDDers do not have a completely empty mental design when they start working
My question is this: can TDD be used in an environment where a senior programmer / designer / architect designs the class and / or component and then passes it to the junior developer? In this case, the tests will not be the main design driver. I assume that the implementing programmer can implement this project using the first testing approach. In this case, is it still a TDD, or is it what it would be better to call the Test Driven Implementation? Would there be something like this work in the real world, or do you think that in the end you will come across the worst parts of TDD and design the front?
UPDATE:
I came across a Roy Osherove blog describing various TDD values :
What are the possible TDD values?
- Test Driven Development : The idea is to write your code in a test manner first. You may already have an existing project in place.
- Test-oriented development . integration test tests in your code and write them down either before or after our code writing. There are a lot of tests in your code. You recognize the value of tests, but you do not have to write them down before you write code. Design probably exists before writing code
- Test Driven Design (eXtreme Method of Programming) : the idea of using the first approach to testing is a technical technique, where tests are a bonus, but the idea is to manage a complete design from little-to-design in general. You design how you go.
- : , . , , , .
, TDD, , , , , , Driven Development.