Ich bin Softwaretester. Wir stellen unserem Kunden eine JAR-Datei zur Verfügung und es ist nun schon zum zweiten Mal passiert, dass die JAR-Datei nicht alle benötigten Klassen enthält. Ich weiß nicht, wie das aus Entwicklungssicht passieren kann, da ich davon ausgegangen bin, dass Eclipse immer alle Klassen zur JAR-Datei hinzufügen würde.
Wie auch immer, gibt es ein Tool, das die Integrität einer JAR-Datei mit den folgenden Anforderungen überprüfen kann:
new
Anweisungen im JAR (durch Reflektion?) und prüft, ob die Klasse aufgelöst werden kannAktualisieren
Die Art und Weise, wie ich an dieses Tool denke, ist
C:\>checkjar.exe myjar.jar
Checking JAR file integrity ...
Class org.mycompany.MyClass is referenced by org.mycompany.MyApp.doSomething(String args) but the class does not exist
Ich brauche nicht
Irgendwann wird es eine Aufgabe sein, das JAR-Checker-Tool in JUnit-Tests oder so etwas zu integrieren. Im Moment habe ich nur das JAR und ich brauche ein Tool, um es auf fehlende Klassen zu überprüfen. Ausführlichere Tests werden voraussichtlich als JUnit-Tests realisiert.
Das Erstellen von Paketen mit der IDE wird heutzutage nicht mehr als gute Praxis angesehen. Es ist fehleranfällig, da es sich um einen manuellen Prozess handelt. (Sie können mehr über modernste Softwareentwicklung in Head First Software Development lesen .)
Sie sollten ein Build-Tool wie Maven oder Gradle zum Erstellen des Projekts/Jars verwenden. Dies macht den Build-Prozess wiederholbar und zuverlässig. Ich denke, dass dies Ihr Problem bereits lösen wird, da Sie sich nicht darauf verlassen, dass der Entwickler beim Erstellen des Jars in der IDE die richtigen Kontrollkästchen aktiviert. Sobald sich eine Klasse im generierten Jar befindet, befindet sie sich immer im generierten Jar.
Zusätzlich können Sie automatisch einen Integrationstest gegen das Jar durchführen. Beginnen Sie mit einem Test, der nur das Jar ausführt. Weitere Details zum Ausführen von Integrationstests mit einem Jar finden Sie hier: http://blog.sonatype.com/2009/06/integration-tests-with-maven-part-1-failsafe-plugin/
Ich würde ein Test-Setup vorschlagen, das aus einer virtuellen Maschine besteht, die nur Windows oder ein minimales Linux und Java enthält und auf dem Ihre JAR-Läufe getestet werden (Sie können nach jedem Lauf aus einem Snapshot wiederherstellen, um sicherzustellen, dass es in Ordnung läuft).
VirtualBox ist eine gute kostenlose virtuelle Maschine, und wenn Sie unter Linux testen (die JAR-Dateien sollten unter Linux genauso gut laufen wie unter Windows), benötigen Sie keine Betriebssystemlizenz.
Thomas Weller
Stefan Birkner
Thomas Weller
Failsafe
werde nach der Paketphase Tests durchführen. Das brauche ich nicht, da ich derzeit Tests manuell durchführe, was auch nach der Paketphase ist.Surefire
wird JUnit-Tests ausführen. Ich habe keine JUnit-Tests.Maven
wird JUnit-Tests ausführen. Dito. Entschuldigung, im Moment kann ich nicht sehen, wie Ihre Antwort ein Tool zum Überprüfen einer JAR-Datei aufnew
Anweisungen bereitstellt.Stefan Birkner