[JAVA] NoHttpResponseException in Spring Boot + WireMock

Veranstaltung

Eine kommerzielle Spring Boot App wurde behoben. In der App gibt es eine Stelle, an der RestTemplate zum Aufrufen der REST-API anderer verknüpfter Systeme verwendet wird. Der Komponententest einschließlich dieses Teils wurde durch Einrichten eines Mock-Servers mit WireMock durchgeführt.

Als ich einen Test gemäß der Renovierung hinzufügte, wurde der vorhandene Test plötzlich NoHttpResponseException:[server] failed to respond Ich begann mit Ausnahmen zu moos.

Es scheint, dass es kein Fehler des Tests selbst ist, da er sich in einem Zustand befindet, in dem er bestanden wird, wenn der Test alleine ausgeführt wird, und Moos ist, wenn er ausgeführt wird. Also begann die Untersuchung.

Ursache

Es scheint ein Fehler zu sein, der auftritt, wenn HttpURLConnection für den HTTP-Client der App verwendet wird, die auf WireMock zugreift.

https://github.com/tomakehurst/wiremock/issues/97 Spring Rest Template verwendet HttpURLConnection auch intern, sodass es anwendbar ist.

Gegenmaßnahmen

Verwenden Sie Spring-Cloud-Contract-Wire-Mock.

https://github.com/tomakehurst/wiremock/issues/97 Das Problem zeigt verschiedene Arten von Gegenmaßnahmen, daher sollten Sie anscheinend diejenige übernehmen, die Ihnen gefällt. Die Auswahlkriterien sind wie folgt.

Wie der Name schon sagt, verwendet Spring-Cloud-Contract-Wiremock WireMock intern, sodass die Änderungen am Testcode minimal waren. Ändern Sie einfach die Notation der Servereinstellungen und geben Sie das Verzeichnis der vorhandenen Testressource an. Eine ausführliche Verwendung finden Sie unter Offiziell.

Configuration(before)


public class ExampleUnitTest {
    @Rule
    public WireMockRule wireMockRule = new WireMockRule(8080);
.... 

Configuration(after)


@AutoConfigureWireMock(port = 8080, stubs = "classpath*:/META-INF/**/mappings/**/*.json")
public class ExampleUnitTest {
....

Wie oben erwähnt, kann in meinem Fall der vorhandene Testcode so übergeben werden, wie er ist, indem nur der Pfad der durch stubs = angegebenen Testressource geändert wird.

Recommended Posts

NoHttpResponseException in Spring Boot + WireMock
Legen Sie den Kontextparameter in Spring Boot fest
Spring Boot 2 Multiprojekt mit Gradle
Wichtige Änderungen in Spring Boot 1.5
Spring Boot-Anwendungsentwicklung in Eclipse
Schreiben Sie den Testcode mit Spring Boot
Implementieren Sie die REST-API mit Spring Boot
Was ist @Autowired im Spring Boot?
Verwendung von Thymeleaf mit Spring Boot
Erstellen Sie mit Gradle ein Spring Boot + Docker-Image
Statische Dateizugriffspriorität beim Spring Boot
Spring Boot-Protokoll im JSON-Format ausgeben
Memorandum zum Herunterladen lokaler Dateien mit Spring Boot
Fordern Sie Spring Boot heraus
Erstellen Sie mit IntelliJ ein Java Spring Boot-Projekt
Lösen Sie die Thymeleaf-Syntaxprüfung in Spring Boot
[Trainieren! ] Zeigen Sie Hello World mit Spring Boot an
Verwenden Sie die DynamoDB-Abfragemethode mit Spring Boot
Spring Boot Form
Spring Boot Denken Sie daran
gae + frühlingsstiefel
DI SessionScope Bean im Spring Boot 2-Filter
Ändern Sie das Sitzungszeitlimit in Spring Boot
SameSite-Cookie im Spring Boot (Spring Web MVC + Tomcat)
Führen Sie ein Spring Boot-Projekt mit VS-Code aus
Anforderungs- und Antwortprotokolle mit Spring Boot ausgeben
Servlet-Filter mit Spring Boot verwenden [Spring Boot 1.x, 2.x kompatibel]
So fügen Sie in Spring Boot einen Klassenpfad hinzu
Java-Tipps - Erstellen Sie mit Gradle ein Spring Boot-Projekt
So binden Sie mit einer Eigenschaftendatei in Spring Boot
Anmerkungen, die in Spring Boot-Aufgabenverwaltungstools verwendet werden
Zeigen Sie die Gradle-Aufgabe im Spring Boot-Projekt an
SPRING BOOT Lernaufzeichnung 01
Frühlingsstiefel + Heroku Postgres
Schreiben von Frühlingsstiefel-Memos (1)
Erster Frühlingsstiefel (DI)
SPRING BOOT Lernprotokoll 02
Spring Boot2 Spickzettel
Spring Boot-Ausnahmebehandlung
Spring Boot Servlet-Zuordnung
Spring Boot Entwicklung-Entwicklungsumgebung-
Spring Boot-Lernverfahren
Verwenden Sie Interceptor im Frühjahr
Spring Boot lernen [Anfang]
Microservices in Spring Cloud
Spring Boot 2.2 Dokumentzusammenfassung
[Spring Boot] DataSourceProperties $ DataSourceBeanCreationException
Spring Boot 2.3 Verfügbarkeit von Anwendungen
Spring Boot Tutorials Themen
Holen Sie sich Cookies im Frühling
Mit Spring Boot herunterladen
Geben Sie die statische Ressourcencodierung in Spring Boot an
Nehmen Sie das externe Glas mit Spring boot2 + Maven3 in das Paket auf
Untersuchte asynchrone Ausführung von Abfragen in Spring Boot 1.5.9
So erstellen Sie ein Spring Boot-Projekt in IntelliJ
SSO mit GitHub OAuth in der Spring Boot 1.5.x-Umgebung
Verwendung von CommandLineRunner im Spring Batch von Spring Boot
Testen Sie die Klasse mit Feldinjektion im Spring-Boot-Test, ohne den Spring-Container zu verwenden
Bis Sie mit der Entwicklung mit Spring Boot in Eclipse 1 beginnen
Probieren Sie gRPC im Spring Boot & Spring Cloud-Projekt (Mac OS) aus.
Führen Sie swagger-ui in die in Spring Boot implementierte REST-API ein