How intrusive should tests be?
There is a benefit to designing software that is easy to test. To me, this starts by following TDD and writing tests first that make use of the software as the customer would most expect it to be used. This is the most important consideration.
You don’t want to make the user of your software question why extra steps are needed or why it is difficult to understand how to use your software. And by customer or user, I mean anybody that will use your software. A customer or user could be another software developer who needs to use a library that is being designed. The tests are a great example of what a user must go through. If there is an extra step that a user must take that provides no value to the user, then that step should be removed, even if the step makes it easier to test the code.
Maybe the extra step can be hidden from the user, and if so, then it might make sense to keep it as long as it makes the testing better. Anytime a test relies...