Also habe ich einen REST-API-Microservice gebaut, der eine lokale Elasticsearch-Instanz abfragt und die Ergebnisse nach einem internen Protokoll übersetzt. Ich habe es in ein Docker-Image eingebaut und würde gerne einige Unit-Tests in Build ausführen. Da ES mit einem privaten Docker-Netzwerk verbunden ist, ist es während des Builds vom Microservice nicht erreichbar, so dass die Tests offensichtlich fehlschlagen. Ich habe mich gefragt, gibt es einen Weg um diese Situation zu umgehen, ohne ein kompliziertes Test-Framework zu verwenden, um Dependency-Injection durchzuführen? Wie testen Sie diese Art von Behältern in Ihrer Arbeitspraxis?Testen von Container-Microservice mit externer Abhängigkeit
Antwort
Ich würde die Anwendung ohne irgendwelche Tests bauen. Dann würde ich es mit docker run
testen, so dass Sie die Vorteile des Dockers Netzwerk nehmen können.
Grob ist dies eleganter als Test in der Mitte des Build:
docker build -t my_app:1.0-early
Ihre Anwendung, um ein Bild zu erhalten.docker run --network my_test_network my_app:1.0-early /run_test_cases.sh
. Geben Sie den ordnungsgemäßen Exit-Code oder Text zurück.- Je nach Erfolg oder nicht des Tests wieder tag:
docker tag my_app:1.0
Sie haben müssen bereits eine Docker Netzwerk (docker network create my_test_network
) oder eine bessere Nutzung Docker-compose.
Aber das bedeutet, dass ich die Tests noch selbst ausführen muss und die Docker-Umgebung durcheinander bringen muss, anstatt die Tests beim Build auszulösen, ohne separate Container für den Test zu erstellen –
Es hängt davon ab, was du mit "mir selbst" meinst. Es kann ein Skript sein. Denke, dass Docker Build am Ende des Tages einen neuen Container für jede Ebene erstellt. Wenn Sie ein CI-System (gitlab, jenkins, bamboo, bitbucket pipeline, etc.) verwenden, können Sie die Build-Phase von der Testphase trennen. – Robert
- 1. maven - mit lokaler Quelle statt externer Abhängigkeit
- 2. Verwenden von Fitnesse zum Testen externer Daten
- 3. NDK verwirrt mit externer Abhängigkeit in Android Studio
- 4. Testen einer Klasse mit einer statischen Klasse/Methode Abhängigkeit
- 5. Verbindung mit externer Datenbank
- 6. Bild mit externer Schnittstelle
- 7. Verbindung mit externer Datenbank von Backand
- 8. Einbetten von iFrame mit externer Website
- 9. Wie verwende ich eine Funktion einer Abhängigkeit nur zum Testen?
- 10. öffnete Externer Browser von QWebView
- 11. Browserify FullCalendar mit externer jQuery
- 12. XML mit externer DTD validieren
- 13. Verbindungszeichenfolge von externer Konfigurationsdatei lesen
- 14. Stack Push mit externer Funktion
- 15. Testen von Framework 4 mit Servlet 2.5
- 16. Sticker-Erweiterung mit externer Quelle
- 17. PyQt4 - setWindowIcon von externer Website
- 18. Access module.exports von externer Datei
- 19. OpenShift MySQL von externer App
- 20. Externer Fingerabdruckscanner mit Android Emulator
- 21. Externer Link mit crosswalk plugin
- 22. Testen von Objekten mit Abhängigkeiten in PHPUnit
- 23. jScrollPane arbeitet mit iframe mit externer Website
- 24. Abhängigkeit von Maven und db4o
- 25. Testen von Java EE Microservice mit Arquillian
- 26. Testen von Popups mit NUnit
- 27. Testen von Controllern mit Minitest
- 28. Testen von Links mit rspec?
- 29. Testen von Suchkick mit RSpec
- 30. Testen von Winkeldienst mit Jasmine
Wenn sie über Systemgrenzen hinweg getestet werden, sind sie keine Einheitstests. –
Ja, ich habe später herausgefunden, dass ich den Titel fixiere. –