2015-10-21 6 views
6

Ich führe reine JUnit4-Java-Tests über meine reinen Java-Dateien auf meinem Projekt, aber ich kann keinen Weg finden, @VisibleForTesting klar zu verwenden, ohne die Sache manuell öffentlich zu machen.Wie man VisibleForTesting für reine JUnit-Tests verwendet

Ex:

@VisibleForTesting 
public Address getAddress() { 
    return mAddress; 
} 

Verfahren seines public hat es zu lassen „öffentlich“ zu Tests, aber in diesem Fall die Anmerkung Sinn nicht richtig machen? warum nicht einfach einen Kommentar verwenden, wenn die Annotation nichts bringt?

Antwort

18

Machen Sie die Methode package-private und der Test kann sie sehen, wenn sich der Test im entsprechenden Testpaket befindet (gleicher Paketname wie der Produktionscode).

@VisibleForTesting 
Address getAddress() { 
    return mAddress; 
} 

Sehen Sie sich auch Ihren Code Refactoring, so dass Sie nicht explizit eine private Methode testen müssen, versuchen Sie, das Verhalten einer öffentlichen Schnittstelle zu testen. Code, der schwer zu testen ist, kann ein Hinweis darauf sein, dass Verbesserungen am Produktionscode vorgenommen werden können.

Der Punkt einer Anmerkung ist, dass seine Konvention und könnte in statischen Code-Analyse verwendet werden, während ein Kommentar nicht konnte.