Other things that I have come across a lot so far that are making the tests more complex then they need to be include

* calls to production code other then what is directly under test. There are several deprecated methods that are used only by tests.
* tests that use fakes that emulate production code behaviour. Some fakes are extremely complex and have their own tests.

That is not to say all fakes are bad or that calls to additional production code should always be avoided. The cost of both should however be considered, and typically avoided.


Jeroen De Dauw - http://www.bn2vs.com
Software craftsmanship advocate
Evil software architect at Wikimedia Germany