Spring Boot Migration Java 8, JUnit4 nach Java11 JUnit5https://www.golabs.ch/rad?&atomThu, 28 Mar 2024 22:24:28 +0000stack.ch
https://stack.ch/
f0d1bc52-ed51-11ee-8c11-005056bb85fbSimtech AG - Blog - Spring Boot Blogs - Spring Boot Migration Java 8, JUnit4 nach Java11 JUnit5
https://www.golabs.ch/rad
f0d1bd4a-ed51-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:24:28 +0000Blog Spring Boot Migration Java 8, JUnit4 nach Java11 JUnit5
https://www.golabs.ch/rad
f0d1beea-ed51-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:24:28 +0000
https://www.golabs.ch/rad
f0d1c05e-ed51-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:24:28 +0000Das Rad dreht sich immer schneller mit Spring Boot und Java. Fast täglich könnten wir unsere Anwendung auf neue Versionen und Libraries migrieren. Eine gröbere Umstellung ist der Wechsel von Java 8 nach Java 11 und JUnit4 nach JUnit5. Wir zeigen anhand eines Beispiels die minimale Migration.
https://www.golabs.ch/rad
f0d1c247-ed51-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:24:28 +0000Laden Sie das Maven Projekt vorlage.zip herunter. Starten Sie Eclipse oder eine andere IDE und importieren Sie das Vorlagen Projekt (JumpStart):In Eclipse wird das Projekt geladen mit Java 8 und JUnit 4. Testen Sie das Projekt über das Terminal via -> mvn clean install -U Der Maven Build sollte fehlerfrei funktionieren:
https://www.golabs.ch/rad
f0d1ccea-ed51-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:24:28 +0000Wir wechseln nun die Java Version von 8 auf 11:Das Projekt basiert nun auf Java 11, testen Sie den Maven BuildDas Projekt funktioniert immer noch ohne Fehler.
https://www.golabs.ch/rad
f0d1cece-ed51-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:24:28 +0000Im Maven POM File migrieren wir den Spring Stack von Version 2.1.8 nach 2.3.3:<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>Der Maven Build sollte immer noch funktionieren.
https://www.golabs.ch/rad
f0d1d11b-ed51-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:24:28 +0000Wir definieren im Maven pom.xml die Java 11 Version:<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>>
<java.version>11</java.version>
</properties>Der Maven Build sollte immer noch funktionieren.
https://www.golabs.ch/rad
f0d1d3e7-ed51-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:24:28 +0000Die Migration nach JUnit 5 erfolgt via das spring-boot-starter-test. Passen Sie die Dependancy wie folgt an:<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>Die Unit Tests ergeben einen Kompiliationsfehler.Öffnen Sie die Test Datei JumpstartApplicationJpaTests.java und entfernen Sie die fehlerhaften import Statements.Entfernen Sie die @RunWith(SpringRunner.class) Annotationen.Importieren Sie die Annotation @Test und die assert Anweisungen neu mit den Jupiter Klassen:package ch.std.jumpstart;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.web.server.LocalServerPort;
import ch.std.jumpstart.dto.CityDTO;
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class JumpstartApplicationJpaTests {
...
}Öffnen Sie die Test Datei JumpstartApplicationTests.java und korrigieren Sie die Fehler wie folgt:package ch.std.jumpstart;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.skyscreamer.jsonassert.JSONAssert;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import ch.std.jumpstart.rest.CityAutoCompleteController;
@ExtendWith(SpringExtension.class)
@WebMvcTest(CityAutoCompleteController.class)
@ActiveProfiles("test")
public class JumpstartApplicationTests {
@Autowired
private MockMvc mvc;
@Test
public void contextLoads() {
}
@Test
public void testCityAutoCompleteController() throws Exception {
MvcResult mvcResult = mvc.perform(get("/rest/auto/cities?value=Bern").contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()).andReturn();
String expected = "[Bern]";
String actual = mvcResult.getResponse().getContentAsString();
JSONAssert.assertEquals(expected, actual, false);
}
}Der Maven Build sollte wieder funktionieren und die Migration ist abgeschlossen.
https://www.golabs.ch/rad
f0d1dd19-ed51-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:24:28 +0000Die JUnit 5 Libraries werden durch die Spring Boot Libraries referenziert. Referenzieren Sie die JUnit Libraries nie direkt via Eclipse.Die migrierte Anwendung finden Sie hier migriert.zip
https://www.golabs.ch/rad
f0d1e3be-ed51-11ee-8c11-005056bb85fbThu, 28 Mar 2024 22:24:28 +0000War dieser Blog für Sie wertvoll. Wir danken für jede Anregung und FeedbackÜber uns
https://www.golabs.ch/about
Thu, 28 Mar 2024 22:24:28 +0000f0d1e793-ed51-11ee-8c11-005056bb85fbAktuell
https://www.golabs.ch/
Thu, 28 Mar 2024 22:24:28 +0000f0d1e847-ed51-11ee-8c11-005056bb85fbAGB
https://www.golabs.ch/agb
Thu, 28 Mar 2024 22:24:28 +0000f0d1e92d-ed51-11ee-8c11-005056bb85fbBildungswege
https://www.golabs.ch/bildungswege
Thu, 28 Mar 2024 22:24:28 +0000f0d1e9d5-ed51-11ee-8c11-005056bb85fbBlog
https://www.golabs.ch/blog
Thu, 28 Mar 2024 22:24:28 +0000f0d1eab5-ed51-11ee-8c11-005056bb85fbRufen Sie mich an
https://www.golabs.ch/callus
Thu, 28 Mar 2024 22:24:28 +0000f0d1eb58-ed51-11ee-8c11-005056bb85fbCharts
https://www.golabs.ch/charts
Thu, 28 Mar 2024 22:24:28 +0000f0d1ec31-ed51-11ee-8c11-005056bb85fbConsulting
https://www.golabs.ch/consulting
Thu, 28 Mar 2024 22:24:28 +0000f0d1ece2-ed51-11ee-8c11-005056bb85fbKontakt
https://www.golabs.ch/contact
Thu, 28 Mar 2024 22:24:28 +0000f0d1edbf-ed51-11ee-8c11-005056bb85fbAusbildung/Kurse
https://www.golabs.ch/education
Thu, 28 Mar 2024 22:24:28 +0000f0d1f04d-ed51-11ee-8c11-005056bb85fbSoftware Engineering
https://www.golabs.ch/engineering
Thu, 28 Mar 2024 22:24:28 +0000f0d1f134-ed51-11ee-8c11-005056bb85fbFreelancer
https://www.golabs.ch/freelancer
Thu, 28 Mar 2024 22:24:28 +0000f0d1f211-ed51-11ee-8c11-005056bb85fbImpressum
https://www.golabs.ch/impressum
Thu, 28 Mar 2024 22:24:28 +0000f0d1f2af-ed51-11ee-8c11-005056bb85fbKursleiter
https://www.golabs.ch/kursleiter
Thu, 28 Mar 2024 22:24:28 +0000f0d1f389-ed51-11ee-8c11-005056bb85fbNetzwerk
https://www.golabs.ch/network
Thu, 28 Mar 2024 22:24:28 +0000f0d1f433-ed51-11ee-8c11-005056bb85fbReferenzen
https://www.golabs.ch/references
Thu, 28 Mar 2024 22:24:28 +0000f0d1f511-ed51-11ee-8c11-005056bb85fbSitemap
https://www.golabs.ch/sitemap
Thu, 28 Mar 2024 22:24:28 +0000f0d1f5b7-ed51-11ee-8c11-005056bb85fbTools
https://www.golabs.ch/tools
Thu, 28 Mar 2024 22:24:28 +0000f0d1f68e-ed51-11ee-8c11-005056bb85fbVision
https://www.golabs.ch/vision
Thu, 28 Mar 2024 22:24:28 +0000f0d1f72c-ed51-11ee-8c11-005056bb85fb