Coupling Smells.
Test Logic in Production
Production code contains logic, branches, or members that exist only to support testing, blurring the line between what ships and what is merely tested.
For Testers Only
Production code contains methods, state accessors, or seams that exist only to be used by tests, 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.