Coupling Smells.
Test Logic in Production
Production code contains test-mode flags, hooks, or branches that make the shipped code behave differently under test, so the real path ships untested.
For Testers Only
Production classes carry members that exist only for tests — state getters, reset() methods, members widened and tagged @VisibleForTesting — polluting the real API and inviting tests that verify internals instead of behavior.
Hard-to-Test Code
Production code whose design (tight coupling, hidden dependencies, global state, non-deterministic IO, or async-only interfaces) forces tests into awkward contortions, or makes a unit impossible to exercise in isolation at all.