Mocking frameworks are useful for creating mock objects that isolate the code under test from its surrounding software environment.  Some mocking frameworks cannot mock non-virtual methods, so they require that you create an Interface for each class, if you don't want to make the methods virtual.  How do you distinguish those Interfaces from the real ones?  That is, if you have a public API, do you name the interfaces that you intend your customer to use something else, or do you hide the testing Interfaces in a separate assembly or namespace?As an aside, is it really necessary to create all those Interfaces?  I don't like the idea of making all my methods virtual, but I really don't like the idea of creating that many interfaces just to make them accessible to a mocking framework.
How do you distinguish your public API interfaces from the interfaces you use for testing/mocking?
java;c#;unit testing;interfaces
I don't. Either the class is (effectively) sealed/final or it has an interface. I don't buy the whole internal classes are somehow above the law: abstraction exists to protect you from change, and your internal types are just as likely to change.Basic structures (DTO's, tuples, and other usually sealed/final objects) are fine in my experience to just use as is in tests. They are effectively part of the public interface of your modules.