Odeurs de couplage.
Le code de production contient des drapeaux de mode test, des hooks ou des branches qui font que le code livré se comporte autrement sous test : le vrai chemin part en production sans avoir été testé.
Les classes de production portent des membres qui n’existent que pour les tests — accesseurs d’état, méthodes reset(), membres à visibilité élargie marqués @VisibleForTesting —, ce qui pollue la véritable API et incite à des tests qui vérifient les détails internes plutôt que le comportement.
Du code de production dont la conception (couplage fort, dépendances cachées, état global, IO non déterministe ou interfaces uniquement asynchrones) force les tests à des contorsions maladroites, ou rend une unité tout simplement impossible à exercer en isolation.