2017-12-27 6 views
3

Ich benutze Spring Boot 1.5.9 und wir haben einen Micro-Service, der sich mit anderen Micro-Services verbindet.Wie funktioniert es, mit mehreren Microservices zu arbeiten und sie in einer Entwicklungsumgebung (nicht Testumgebung) zu verspotten?

Für Integrationstest und Entwicklung (der Entwicklercomputer) Ich möchte die restlichen Anrufe, die für andere Mikrodienste gemacht werden, mock/stub. Für Unit/Integration Tests ist diese Frage bereits mehrfach beantwortet: WireMock, MockBean und MockRestServiceServer sind gute Werkzeuge. Aber für die Entwicklung Ich versuche, den besten Ansatz herauszufinden.

Warum? Es ist ein Problem, jeden Microservice zu starten, von dem der eigentliche Microservice abhängt. Die Idee ist also, den Microservice unabhängig zu machen und zu starten, ohne dass ein zusätzlicher Server auf dem Rechner des Entwicklers oder an einem anderen Ort läuft. So würde ein einfacher `mvn Spring-Boot-Run 'ausreichen, um meinen Microservice zu starten und ohne Bedenken um weitere Microservices zu arbeiten.

Also, meine Frage ist: Was der empfohlene Ansatz für Mock/Stub Rest Anrufe in Entwicklung? Wiremock ist auch in diesem Fall ein guter Ansatz?

Mein Projekt

Ich habe zwei Profile in src/main/java/resources/: die 'default' (application.properties, dass für eine andere Umgebung verwendet wird) und die 'dev' (application-dev.properties, für die Entwicklung verwendet).

In meinen Tests (src/test/java/resources/) habe ich nur eine application.properties, das ist grundlegend eine Kopie von application-dev.properties.

Ich versuche bereits, Wiremock für Integrationstests zu verwenden und funktioniert gut. Aber ich würde es auch nicht gerne für die Entwicklung verwenden, weil ich nicht so sehr die Idee mag, eine Abhängigkeit einzuführen, die nur für die Entwicklung in meiner JAR verwendet wird. Meine Absicht ist es, die gleiche Strategie für Integrationstest und -entwicklung zu verwenden.

Also, was sind die Optionen?

+0

Warum schreiben Sie nicht einen Client für den zweiten Webdienst als Spring-Bean und verspotten Sie diese Spring-Bean in Ihren Komponententests? Genauso wie Sie ein DAO als Client für Ihre Datenbank schreiben und das DAO in Ihren Komponententests vortäuschen würden. –

+0

Hallo! Das Unit/Integrationstest-Problem wurde gelöst (mit Wiremock). Meine Frage bezieht sich auf die normale Entwicklungsumgebung, wenn Sie den Spring Boot ausführen. Ich weiß nicht, ob die gleiche Vorgehensweise das "Richtige" ist. – Dherik

+1

In Verbindung stehend: https://Stackoverflow.com/questions/39891218, https://softwareengineering.stackexchange.com/questions/332972, https://softwareengineering.stackexchange.com/questions/334609 – tkruse

Antwort

2

Sie möchten also Ihren Microservice lokal, z. für manuelle Tests, aber Sie möchten nicht alle anderen Microservices starten, von denen es abhängt.

Teams führen Sie eine der folgenden:

  • Connect lokaler Micro auf gemeinsam genutzten, eingesetzt Micro Instanzen (Staging-Umgebungen)
  • Connect lokale Micro an easy-to-Launch Docker Bilder der anderen Microservice
  • Verbinden Sie sich mit einer einzelnen lokal laufenden Wiremock-Instanz, die einige/alle anderen Microservices nachahmt. Sie können starten Wiremock Standalone für das, separat von Ihrem Microservice
  • Schreiben Sie eine minimale leichte benutzerdefinierte Mock von anderen Microservices (nur besser als Wiremock, wenn einige Geschäftslogik zu tun)
  • Verbinden Sie nichts, aber Dummy-Werte zurückgeben vom internen API-Client.
  • starten Eigentlich alle anderen Microservices lokal

Welche dieser Werke am besten für Sie auf Ihre Umgebung, und was genau die anderen microserivce Abhängigkeiten bietet als Funktionalität abhängt. Sie können nicht erwarten, dass jeder von ihnen eine Silberkugel ist, die für alle Teams und alle Situationen am besten ist.

+0

Ich mag die Antwort wirklich. Ich würde gerne wissen, wie andere Entwickler diese Situation meistern. Meine Sorge war, dass ich etwas wirklich "Seltsames" dachte, um das Problem zu lösen, aber deine Antwort zeigt mir, dass ich nicht so falsch liege. – Dherik

Verwandte Themen