Ich brauche MongoDB automatisch ausgeführt werden, wenn meine JUnit-Tests ausgeführt werden, und dann zu beenden, wenn die Tests abgeschlossen sind. Ich habe versucht, mit dem maven mongoDB Plugin, aber mongoDB scheint nicht zu laufen. Irgendeine Hilfe?Probleme beim Ausführen von MongoDB, wenn JUnit-Tests ausgeführt werden
Antwort
Sie können für diesen Einsatz embed.mongo: https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo
Es beginnt im Grunde eine eingebettete Mongo db in der aktuellen Jvm.
Sie können es mit der @BeforeAll
/@Before
Klausel starten und danach stoppen und alles wird aufgeräumt.
Frühlings-Boot hat eine Auto-Konfiguration in so gebaut Sie nur eine Abhängigkeit embed.mongo hinzufügen müssen: http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-mongo-embedded
Ansonsten können Sie die Dokumentation auf Github verwenden Sie Ihre eigene eingebettete Mongo db einzurichten.
Wenn Sie nur Komponententests durchführen, sollten Sie versuchen, die Datenbankintegration nachzuahmen. Ich musste mich jedoch gleichzeitig damit auseinandersetzen und musste die Integration zwischen Mongo/Java-Projekt testen. Das Mongo-Plugin funktionierte auch nicht für mich. Hier sind zwei Optionen, die ich ausprobiert habe, und vielleicht werden sie helfen:
Option 1 (mit Docker): In meinem Build und Deploy-Stack (Maven, Jenkins, Docker), war die einfachste Sache für mich zu tun Starten Sie einen Mongo-Container als Pre-Build-Schritt, führen Sie den Build mit den konfigurierten Integrationsumgebungseinstellungen aus, und fahren Sie den Container als Post-Build-Schritt herunter. Wenn Sie über bestimmte Daten verfügen, die Sie testen müssen, können Sie außerdem einen Container erstellen, der diese Daten enthält.
Option 2 (nur Maven/Mongo): In der Lebenszyklustufe pre-integration-tests
von Maven rufen Sie das Betriebssystem unter Verwendung von Maven exec plugin an, um Mongo zu starten. Führen Sie Ihre Tests aus und stellen Sie sicher, dass diejenigen, die Mongo erfordern, während der Phase integration-test
ausgeführt werden. Dann schließen Sie Mongo in der post-integration-test
Phase. Abhängig von Ihren Tests kann dies schwierig sein, wenn sie den Status Ihrer Mongo-Instanz ändern. Wenn dies ein Problem ist, könnten Sie einige Skripte schreiben, um Mongo neu zu initialisieren/zu zerstören, und diese Skripte in den oben genannten Phasen aufrufen.
- 1. Mongodb kann nicht ausgeführt werden
- 2. Python Tkinter Probleme beim Ausführen von Befehlen
- 3. Probleme beim Installieren und Ausführen von ArangoDB
- 4. Probleme beim Ausführen von Java 8 TestNG in IntelliJ
- 5. Probleme beim Bearbeiten und Ausführen von .sh-Datei in Cygwin
- 6. Probleme beim Ausführen von SPARQL-Abfrage für MESH-Endpunkt
- 7. Probleme beim Ändern der DBpath in Mongodb
- 8. Beim Ausführen von XCUITest auf dem Gerät wird "Zu viele Instanzen dieses Dienstes werden bereits ausgeführt"
- 9. Werden Firebase-Analyseereignisse gesendet, wenn Robolectric-Tests ausgeführt werden?
- 10. Probleme beim Ausführen von javac von der Befehlszeile
- 11. Probleme beim Ausführen eines Zeichenfolgevergleichs in LINQ
- 12. Probleme beim Verbinden mit mLab MongoDB von C#
- 13. (Jython) Probleme beim Ausführen von Python-Skript von Java
- 14. Probleme beim Ausführen ausführbare jar mit Abhängigkeiten
- 15. Probleme beim Ausführen von Code mit Python IDLE
- 16. Probleme beim Starten von MongoDB (Mac) - Code: 100
- 17. TestNG Probleme beim Ausführen des Projekts
- 18. Ich habe Probleme beim Ausführen meiner App
- 19. Probleme beim Ausführen plattformübergreifender UITests auf Xamarin.iOS
- 20. Probleme beim Ausführen von iOS 5.1 Simulator mit XCode 4.5
- 21. Probleme beim Ausführen einer elektronenbasierten Anwendung?
- 22. Probleme beim Importieren von existierendem Mongodb nach Atlas
- 23. Programm ausführen, aber nicht, wenn bereits ausgeführt
- 24. java.lang.ClassNotFoundException: org.apache.spark.sql.DataFrame Fehler beim Ausführen von Scala MongoDB Connector
- 25. Probleme beim Ausführen der FLTK 1.3.3
- 26. Gibt es potenzielle Probleme beim Ausführen von 'ls' als Service?
- 27. Probleme beim Ausführen von Exec ("unix2dos xxx") in PHP/Apache
- 28. Probleme beim Ausführen von Atom Texteditor unter Debian Linux 9.0
- 29. nosql mongodb replicaset autosharding, Datenverlust beim Ausführen eines Experiments
- 30. Probleme beim Ausführen von Phantomjs + Knoten auf Heroku
Unittests sollten die Kommunikation mit der realen Datenbank an erster Stelle verspotten (es sei denn, es handelt sich lediglich um Anwendungstests mit dem JUnit-Framework ...). –
@TimothyTruckle Wenn du davon sprichst, den Mongo-Treiber zu verspotten, tu das bitte nicht. Hier ist ein Artikel, warum Sie das nicht tun sollten https://jaxenter.com/testing-the-database-layer-119366.html – tddmonkey
Die Artikel Argumente sind gültig, wenn Sie Verhalten * in der Datenbank * testen. Wenn Sie (* unit- *) die Geschäftslogik außerhalb der Datenbank testen, sollten Sie den Datenbankzugriff wirklich verspotten. –