IMO one of the main characteristics of a good TDD is: testing your class (or actually unit) in isolation.
When you do so, you are able to actually test single behavior in each test -- only one test will fall for a single problem you have.
For this you first must verify that there are no static references from your class (including constructors AKA new
keyword).
in theory it is easy not to use any dependency injection framework and test your classes in complete isolation, for this you need to inject all dependencies in the constructor and create Factories classes that will call the new
keyword.
I found this theoretical MO to be too hard to actually do in practice.
Am I missing something important in the process?
EDIT: I do think that we should all aim to one failure for one code change. it will never be perfect but it will get your code closer to there, people forget that test code is also maintainable code, specification of tested code changes.
If you don't aim there you will end up deleting tests which is a poor solution