Ich habe mehrere Unit-Tests und Komponententests, die ich gegen verschiedene Versionen von Java (1.6, 1.7, 1.8, usw.) testen möchte.
Ich frage mich, was ist die beste Methode dazu?
Soll ich Tests mehrmals mit Jenkins ausführen und jedes Mal, wenn ich den Pfad der JAVA_HOME
-Variable zu einer anderen JRE ändere?
Kann ich das Maven Plugin benutzen? Vielleicht unterschiedliche Profile?
Gibt es außerdem eine Möglichkeit, TestNG zum Ausschließen von Tests auf Basis der JRE-Version zu verwenden? Ich kann damit umgehen, indem ich eine if-Anweisung für eine java.version
-Systemeigenschaft verwende, aber ich frage mich, ob es einen eleganteren Weg gibt.
Falls sich das auf die Antwort auswirkt, möchte ich erwähnen, dass ich es in Zukunft mit mehreren Betriebssystemtypen und mehreren Versionen des Produkts testen möchte (dieselben Tests gegen v1.0, v2.0 usw.).
Um denselben Code unter verschiedenen Bedingungen auszuführen, können jenkins einfach dieselben Skripte mit verschiedenen JAVA_HOME- oder anderen Einstellungen ausführen. Dies auf verschiedenen Triggern oder als Teil eines mehrstufigen Jobs zu tun, ist eine Entscheidung für Sie
Siehe TestNG für diese Antwort Deaktivieren der Testng Test basiert auf einer Bedingung
Ein möglicher Ansatz ist die Verwendung von Maven-Profilen in Kombination mit dem maven toolchains .
Bei diesem Ansatz werden Sie mehrere JDKs auf Ihrem Build-Server konfigurieren und Ihr Pom-XML so konfigurieren, dass es über eindeutige Profile verfügt, die Ihre Komponententests mit jedem JDK ausführen.
Sie sollten in Erwägung ziehen, nicht nur verschiedene Java-Laufzeiten, sondern auch verschiedene Zielklassenversionen zu testen. Dies kann auch mit dem Profilansatz kombiniert werden, indem verschiedene Profile mit unterschiedlichen Kompilierungseinstellungen verwendet werden.
last, Ausschluss von sicheren Feuertests kann auch getan werden von Profilen, so dass Sie das auch steuern können.
Ich kenne eine der Methoden, die in vielen Open-Source-Projekten verwendet werden, die TravisCI verwenden. In diesen Projekten enthält die .travis.yml-Datei (Metadatendatei für TravisCI) diese Informationen. Beispiel: -
%Vor%Ich habe es auch in einem meiner Open-Source-Projekte verwendet ( hier ). Ich bin mir nicht bewusst, ob es in der Industrie einen anderen rationalisierten Prozess gibt, aber es kann etwas sein, das sich öffnet und von Organisationen über Organisationen und Projekte bis hin zu Projekten variieren kann.
Tags und Links java unit-testing integration-testing automated-tests testng