Die Anmerkungen zu SpringJUnitConfig und SpringJUnitWebConfig in Spring 5

Die Anmerkungen SpringJUnitConfig und SpringJUnitWebConfig in Spring 5

1. Einführung

In diesem kurzen Artikel werfen wir einen Blick auf die neuen Anmerkungen@SpringJUnitConfig und@SpringJUnitWebConfig, die in Frühjahr 5 verfügbar sind.

These annotations are a composition of JUnit 5 and Spring 5 annotations, die die Testerstellung einfacher und schneller machen.

2. @SpringJUnitConfig

@SpringJUnitConfig kombiniert diese 2 Anmerkungen:

  • @ExtendWith(SpringExtension.class) from JUnit 5, um den Test mit der KlasseSpringExtension und auszuführen

  • @ContextConfiguration from Spring Testing, um den Spring-Kontext zu laden

Erstellen wir einen Test und verwenden Sie diese Anmerkung in der Praxis:

@SpringJUnitConfig(SpringJUnitConfigIntegrationTest.Config.class)
public class SpringJUnitConfigIntegrationTest {

    @Configuration
    static class Config {}
}

Notice that, in contrast to the @ContextConfiguration, configuration classes are declared using the value attribute. Ressourcenpositionen sollten jedoch mit dem Attributlocations angegeben werden.

Wir können jetzt überprüfen, ob der Spring-Kontext wirklich geladen wurde:

@Autowired
private ApplicationContext applicationContext;

@Test
void givenAppContext_WhenInjected_ThenItShouldNotBeNull() {
    assertNotNull(applicationContext);
}

Schließlich haben wir hier den äquivalenten Code von@SpringJUnitConfig(SpringJUnitConfigTest.Config.class):

@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = SpringJUnitConfigTest.Config.class)

3. @SpringJUnitWebConfig

@SpringJUnitWebConfigcombines the same annotations of @SpringJUnitConfig plus the @WebAppConfiguration from Spring testing - um dieWebApplicationContext zu laden.

Mal sehen, wie diese Anmerkung funktioniert:

@SpringJUnitWebConfig(SpringJUnitWebConfigIntegrationTest.Config.class)
public class SpringJUnitWebConfigIntegrationTest {

    @Configuration
    static class Config {
    }
}

Wie@SpringJUnitConfig werdenthe configuration classes go in the value attribute und alle Ressourcen mit dem Attributlocations angegeben.

Außerdem sollte das Attributvalue von@WebAppConfiguration jetzt mit dem AttributresourcePath angegeben werden. By default, this attribute is set to “src/main/webapp”.

Lassen Sie uns nun überprüfen, obWebApplicationContext wirklich geladen wurde:

@Autowired
private WebApplicationContext webAppContext;

@Test
void givenWebAppContext_WhenInjected_ThenItShouldNotBeNull() {
    assertNotNull(webAppContext);
}

Auch hier haben wir den entsprechenden Code ohne Verwendung von@SpringJUnitWebConfig:

@ExtendWith(SpringExtension.class)
@WebAppConfiguration
@ContextConfiguration(classes = SpringJUnitWebConfigIntegrationTest.Config.class)

4. Fazit

In diesem kurzen Tutorial haben wir gezeigt, wie die im Frühjahr 5 neu eingeführten Anmerkungen@SpringJUnitConfig und@SpringJUnitWebConfig verwendet werden.

Der vollständige Quellcode für die Beispiele istover on GitHub verfügbar.