Aus dem Kurs: MongoDB Grundkurs

Spring-Boot-JUnit-Tests durchführen – Tutorial zu MongoDB

Aus dem Kurs: MongoDB Grundkurs

Spring-Boot-JUnit-Tests durchführen

In diesem Video zeige ich Ihnen, wie Sie SpringBootTest schreiben können, die MongoDB verwenden. Wir haben hier eine Junit Test-Klasse, die als SpringBootTest fungiert, und dies sieht man daran, dass sie mit der Annotation @SpringBootTest annotiert ist. Ein SpringBootUnitTest hat den Riesenvorteil, dass bestehende Beans, also z. B. ein PersonRepository rein indiziert werden können. also per @Autowired verbunden werden kann. Wir wollen nun um diesen sehr, sehr einfachen UnitTest tausend Dokumente in unsere MongoDB hinzufügen. Und das machen wir mit dem PersonRepository. Also, wir sagen, personRepository , personRepository.deleteAll. D. h., wir möchten am Anfang des Tests alle Dokumente aus dem PersonRepository löschen. Und wir überprüfen, dass dieses Kommando auch wirklich erfolgreich war mit einem Assert. Also z. B. Assertions, und wir nehmen den junit, Jupiter Assertions, assertEquals expected ist 0. Und wir messen personRepository.count. Mit personRepository.count erhalten wir die Anzahl der Dokumente, die in diesem personRepository enthalten sind, also in der personCollection. In diesem Fall erwarten wir also, dass nach dem Löschen aller Dokumente aus dem personRepository die Anzahl der Dokumente 0 ist. Okay, dann führen wir diesen Test aus mit Run as JUnit Test. Und wir sehen hier auf der linken Seite, dass unser Test ausgeführt wurde und grün ist. Wir haben hier in unserer Anwendung einmal eine Personenklasse, die eine ID und einen Namen hat, und ein personRepository, und dieses Repository entspricht einer MongoDB-Collection. Machen wir nun weiter mit unserem Test. Erzeugen wir als Erstes einen Stream von tausend Personen. Wir machen das mit Stream.iterate von 1 bis i -> i+1. Also wir erzeugen uns hier einen Stream von tausend Zahlen. Also wir limitieren den Stream auf tausend, und wenn wir dies haben, dann können wir unsere tausend Zahlen mappen auf i wird zu, und dann sagen wir, dass eine Zahl i, die von 1 bis 1000 läuft, gemappt wird auf eine Person. Also wir erzeugen jetzt nun ein Person-Objekt person = New Person. Wir setzen den Namen der Person, Person.setName, nochmal Person+i. Also wir erzeugen Personen, die heißen Person 1 bis Person 1000 und das liefern wir zurück. Innerhalb des Mapblocks liefern wir die Person zurück. und dann sammeln wir alle tausend Personen in einer Liste, mit collect: Collectors.toList, und das weisen wir einer Liste von Personen zu und das muss natürlich noch importiert werden. Und die Liste nennen wir Personen. Diese tausend Personen, die werden wir auf einmal in die MongoDB speichern. Und zwar nehmen wir unser personRepository, personRepository und führen die Methode Insert aus. Und Insert kann auch eine Liste von Personen aufnehmen, also Personen. Das Hinzufügen von mehreren Personen, also von mehreren Dokumenten in eine Kollektion ist deutlich performanter als das Hintereinanderhinzufügen von einzelnen Dokumenten. Am Ende übernehmen wir noch diese Zeile, in der wir überprüfen, dass die Anzahl der Dokumente in unserem Repository genau 1000 ist. Wenn wir nun diesen Test ausführen mit JUnit Test, dann sehen wir, dass das Hinzufügen von 1000 Dokumenten wirklich sehr, sehr schnell funktioniert. Und wir sehen diese 1000 Dokumente auch in der MongoDB. Mit use Test, wir verwenden immer noch Test-Datenbank, und dann db.Person.count. Wir sehen, dass es genau 1000 Dokumente sind. Und wenn wir einmal einen Find ausführen, dann sehen wir die ersten 20 Dokumente und die heißen mit dem Namen immer Person 1, 2 usw. Interessant ist auch, dass Spring Data ein zusätzliches Attribut hier hinzugefügt hat, indem der Klassenname des Objektes gespeichert wird.

Inhalt