Ich habe ein paar JUnit-Tests geschrieben, um meine REST-Funktionalität zu testen. Da ich nur REST (und nicht die Datenbank, Domänenlogik, ..) testen möchte, habe ich einen Stubfill mit Dummy-Daten erstellt, der für den Rest des Backends steht.Wie lade ich verschiedene Klassen für JUnit-Tests dynamisch?
[EDIT] Zum Beispiel möchte ich testen/Kunden/alle Eine GET-Anfrage wird mit einer Arraylist beantwortet werden, die alle Namen enthält.
Ich benutze daher MockMV.
Wenn Sie normalerweise eine GET-Anfrage an/customers/all ausführen, wird eine Anfrage an die Datenbank gesendet. Um nun meinen REST-Controller zu testen, habe ich einen Stub erstellt, der auf GET/customers/all mit einer einfachen Arraylist reagiert, die nur meinen Namen enthält (wie Sie im Test sehen können). Wenn ich diesen lokalen Test teste, ersetze ich einfach die reale Klasse durch diesen Stub. Wie wird das dynamisch gemacht?
Controller wie jede andere Klasse getestet werden, mit Ausnahme der Tatsache, dass sie in der Regel stumm und würden eine große Menge an Arbeit zu anderen Klassen delegieren . Was Sie tun möchten, ist, alle anderen Klassen zu verspotten, die an der Verarbeitung und in der Beziehung zum Controller beteiligt sind. Um Ihre Frage zu beantworten, würde ich sagen, dass Ihre Herangehensweise falsch scheint. Könnten Sie bitte klarstellen, über welchen Stummel Sie sprechen? – LoreV
Ich verwende MockMVC, um meinen REST zu testen. Wenn ich keinen Stub für den Rest meines Backends verwende, wird jeder Test, den ich mit MockMVC mache, eine Anfrage an den Rest meines Backends stellen, nicht wahr? – Dai
MockMvc wird für Integrationstests verwendet, auch End2End-Tests genannt. Diese haben den Zweck, mehr als eine Einheit Ihres Codes zu testen. Siehe http://www.petrikainulainen.net/programming/spring-framework/integration-testing-of-spring-mvc-applications-configuration/. Nach Ihrer Frage würde ich jedoch Mockito empfehlen, Komponententests für Ihren Controller zu erstellen, bevor Sie mit dem MockMVC-Integrationsframework fortfahren. – LoreV