Lets über Wortlaut genau sein:
Wenn Sie reden wirklich über ein Verfahren zur Herstellung einer Java-Schnittstelle ; Mit Java8 können Sie dann eine Standardimplementierung bereitstellen, die beispielsweise eine Ausnahme auslösen könnte. und dann haben Sie sehr spezifische Klassen, die diese Schnittstelle implementieren und diese eine Methode möglicherweise für Testzwecke überschreiben.
Wenn Sie über "Schnittstellen" im Allgemeinen sprechen; wie "die Liste der Methoden einer Klasse" ... dann könnte diese Art von "Base Throws" und "Children Override" auch funktionieren.
Natürlich könnte die erste Antwort die Sichtbarkeit selbst sein. Wenn wir nicht sprechen über eine echte Schnittstelle sind; Sie könnten das Methodenpaket zumindest schützen. dann ist die Nutzung auf dasselbe Paket beschränkt.
Eine andere Möglichkeit wäre, ISP und segregate Ihre Schnittstellen zu folgen. Wenn es etwas gibt, das nur zum "Testen" verwendet werden sollte; dann überlege, diese Dinge in ein "TestSupportInterface" zu stellen; oder etwas Ähnliches.
Aber nochmal; die meisten dieser Ideen funktionieren "per Konvention"; durch Bereitstellung einer Art von Informationen, die der Benutzer verdauen muss ... aber das kann nicht erzwungen werden.
Endlich: Sie könnten Ihren Produktionscode ändern. Sehr oft brauchen Sie solche "speziellen Testgetter" nicht. Mit anderen Worten: Wenn Ihre Tests wie "Zustand von X abrufen" funktionieren, machen Sie etwas mit X. holen Sie den Zustand von X erneut und vergleichen Sie ". Manchmal kann dies in Verhalten basierte Tests geändert werden (Sie überprüfen nicht, was passiert mit X; aber Sie überprüfen, was X zu Y, Z, ... tut).
Ich schreibe Test-Klasse für unsere Business-Services-Methoden, in meinem Testfall muss ich alle Benutzer entfernen (nur für Test) und ich möchte diese Methode nicht auf die Service-Ebene setzen, also was soll ich tun? – Moolerian
Kann ich @Deprecated oder etwas Ähnliches verwenden? ich möchte eine Möglichkeit, andere Entwickler zu warnen "nicht im Produktionsmodus verwenden" – Moolerian