Beispiel, wie man testng-Tests mithilfe von Arquillian auf Wildfly in einem Docker-Container ausführt
Arquillian hat eine Erweiterung erhalten, mit der es möglich ist, aus einem (Maven-) Projekt heraus Docker-Container zu bauen und zu steuern: Arquillian Cube. So können die Tests abgeschottet in eigenen Container laufen. Nach den Tests werden die Container auf Wunsch gelöscht und beim nächsten Durchlauf wieder automatisch erstellt.
In diesem Beispiel wird TestNG als Testframework verwendet, um eine EJB auf einer Wildfly-Installation zu testen, die sich in einem Docker-Container befindet.
Dieses Projekt wurde in folgender Umgebung erstellt:
Voraussetzung für die Durchführung ist ein gestarteter Docker-Service. Damit Arquillian Cube auf den Docker-Dienst zugreifen kann, muss die Docker-Konfiguration erweitert werden. In der Datei
/etc/default/docker
bzw.
/lib/systemd/system/docker.service
wird bei den DOCKER_OPTS folgendes ergänzt:
DOCKER_OPTS="-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock"
Falls die Maschine, auf der Docker läuft, eine andere ist, als die, auf der das Projekt gebaut wird, muss bei der IP 0.0.0.0 eingetragen werden. Nach der Konfiguration startet man Docker neu.
Wenn die Maschine, auf der Docker läuft, dieselbe ist, kann das Projekt geklont werden und ohne weitere Anpassungen gebaut werden. Falls nicht, muss die Datei
/src/test/resources/arquillian.xml
angepasst werden.
In diesem Ordner liegt auch das Dockerfile, das das Docker-Image definiert.
Der Test befindet sich im Ordner
/src/test/java/meinetests
Oder direkt mit
git clone https://github.com/heckenmann/arquillian-cube-wildfly
mvn clean install
klonen und bauen.
Quellen: