Frage

Ich bin neu auf Unit-Tests unter Verwendung von nunit (und Java-Entwicklung im Allgemeinen). Wenn Unit-Tests zu schaffen für private Methoden auf Klassen, es sieht aus, als ob die Testdatei im selben Paket sein muss als die Klasse getestet. Was ist die typische Art und Weise der APIs der Unit-Tests Export zu vermeiden? Kann ich die Klassen / Prüfverfahren Paket geschützt machen? Oder haben die Entwickler der Regel eine separate Build für die Freigabe, die Unit-Test-Dateien ausschließt?

War es hilfreich?

Lösung

Die Testdatei muss nicht unbedingt in dem gleichen Paket sein, wie die Klasse getestet. In der Tat ist es eine gute Praxis, die Testdateien in einem völlig separaten Paket zu haben, so dass sie die öffentliche API testen, ohne mit Paketebene Details der Implementierung betroffen ist.

Alternativ können Sie Ihren Build-Skript (z Nant) einrichten Dateien ignorieren „Test“ enthalten, wenn Sie Ihre Version ausführbare bauen.

Andere Tipps

kann ich sagen, IntelliJ oder Ant nicht JUnit-Tests in der Bereitstellung zu verpacken. Ich habe Tests in einem separaten Verzeichnis aus dem Quellcode, das ist, was es möglich macht.

Sie Quell- und Testklassen nicht mischen zusammen. Halten sie voneinander trennen, um es einfacher für das Werkzeug / script verwenden, um Sie bereitstellen.

persönlich nur mein Ansatz ist ausgesetzt Funktionalität zu testen, so dass Sie nur gut gekapselt Teile Prüfung am Ende.

Dies führt in der Regel meines Design kleine Klassen mit gut definierten Funktionalität zu enthalten, die zu Test einfacher sind.

Im Allgemeinen, wenn Sie Unit-Tests nicht mit den Interna betroffen sein sollten, was Sie testen, so finde ich dies der beste Weg ist, es zu nähern.

Ich stimme auch, es ist am besten Test- und Produktionscode zu trennen.

Halten Test Quellcode aus Anwendungsquellcode. Im Allgemeinen ausgesetzt Funktionalität nur Test. Wenn Sie wirklich privates Verhalten müssen testen, erstellen Sie ein Testobjekt, das das reale Objekt erweitert und ermöglicht publec Zugang zum privaten Verhalten.

Ich denke, es ist ein Fehler Ihres Test-Code aus dem Paket des CUT (Klasse Under Test) zu bewegen. An einem gewissen Punkt können Sie eine geschützte Methode oder Klasse zu testen, und in einem anderen Paket Ihren Testcode macht so schwer oder unmöglich ist.

Eine bessere Lösung ist ein separates Verzeichnis für Ihren Testcode zu erstellen, die die Paketstruktur Ihrer Produktion Code einfach widerspiegeln. Hier ist, was ich tun:

src/main/java/com/example/Foo.java
src/test/java/com/example/FooTest.java

Dann wird Ihr Build-Skript kann sehr einfach src/test/** ignorieren, wenn es Zeit für die Verpackung und den Einsatz kommt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top