2010-10-04 12 views
5

Potrzebuję wykonać kilka testów integracyjnych na bazie danych Mongo przy użyciu Javy i szukałem rozwiązania podobnego do DbUnit (DbUnit jest dla Hibernate), które może zapełniać moją bazę danych niestandardowymi danymi i resetować stan po każdym uruchomieniu.Testy integracyjne z MongoDB?

Jakieś wskazówki?

Dzięki

+0

odpowiedział szczegółowo w tej kwestii http://stackoverflow.com/questions/6437226/embedded-mongodb-when-running-integration-tests – KPrince36

Odpowiedz

3

Na początek nie znam żadnego bezpośredniego odpowiednika DBUnit dla Mongo. Mongo wciąż jest nowym produktem, więc prawdopodobnie będziesz musiał "przetasować" dla niektórych z tych rzeczy.

Jednakże, istnieje kilka cech Mongo, że powinno być to łatwe:

  1. Biegnie z minimalnymi uprawnieniami
  2. Może po prostu „run” na przygotowanych plików
  3. To tak naprawdę nie ma schemat (oprócz indeksów)
  4. może pracować z danymi JSON

podstawie zbioru danych istnieje wiele sposobów aby to zrobić. Ale są tam podstawowe narzędzia.

  • Powinieneś być w stanie uruchomić wersję specjalnie do testu, z testu.
  • Powinieneś być w stanie zaimportować dane "stanu" z pliku JSON.
  • Powinieneś być w stanie zastosować dowolne funkcje po stronie serwera z pliku JS (od zera).

Cała sprawa powinna być prosta. Chociaż będziesz musiał napisać dużo kodu kleju.

+2

Nie zapomnij, ty może używać pliku Java File.createTempFile (z file.deleteOnExit), aby łatwo tworzyć bazy danych testów mongo db. – Steven

2

Oto co ja: połączyć znany (często dzielone) Mongo instancji, lecz utworzyć nową unikalną bazę danych dla każdego testu przy użyciu UUID. Nie musisz się martwić o tworzenie kolekcji, ponieważ są one tworzone leniwie, gdy po raz pierwszy przechowujesz w nich dokumenty. Utwórz wszelkie indeksy, których potrzebujesz w konstruktorze repozytorium lub DAO; Tworzenie indeksu mongo od razu się powiedzie bez wykonywania żadnej pracy, jeśli indeks już istnieje. Oczywiście nie musisz martwić się o migracje schematu ;-)

Ten schemat wymaga uruchomienia z pustego magazynu danych, ale jest to znany stan, więc możesz go łatwo wypełnić w fazie konfiguracji testów ewentualnie.

Po zakończeniu testu usuń całą bazę danych w fazie wyładowania.

0

Wiem, że to pytanie jest stare, ale może moja odpowiedź przyda się komuś. Oto prosty util, że napisałem to ostatnio: https://github.com/kirilldev/mongomery

Bardzo prosty do wypełnienia db z danymi z pliku json:

//db here is a com.mongodb.DB instance 
MongoDBTester mongoDBTester = new MongoDBTester(db); 
mongoDBTester.setDBState("predefinedTestData.json"); 

Aby sprawdzić stan db:

mongoDBTester.assertDBStateEquals("expectedTestData.json"); 

Obsługuje zastępcze dla oczekiwanych plików, które mogą być przydatne w niektórych sytuacjach.

Powiązane problemy