The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5

1. Introduction

In this quick article, we’ll take a look at the new @SpringJUnitConfig and @SpringJUnitWebConfig annotations available in Spring 5.

These annotations are a composition of JUnit 5 and Spring 5 annotations that make test creation easier and faster.

2. @SpringJUnitConfig

@SpringJUnitConfig combines these 2 annotations:

  • @ExtendWith(SpringExtension.class) from JUnit 5 to run the test with the SpringExtension class and
  • @ContextConfiguration from Spring Testing to load the Spring context

Let’s create a test and use this annotation in practice:

@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. However, resource locations should be specified with the locations attribute.

We can now verify that the Spring context was really loaded:

@Autowired
private ApplicationContext applicationContext;

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

Finally, here we have the equivalent code of @SpringJUnitConfig(SpringJUnitConfigTest.Config.class):

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

3. @SpringJUnitWebConfig

@SpringJUnitWebConfig combines the same annotations of @SpringJUnitConfig plus the @WebAppConfiguration from Spring testing – to load the WebApplicationContext.

Let’s see how this annotation works:

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

    @Configuration
    static class Config {
    }
}

Like @SpringJUnitConfig, the configuration classes go in the value attribute and any resources are specified using the locations attribute.

Also, the value attribute of @WebAppConfiguration should now be specified using the resourcePath attribute. By default, this attribute is set to “src/main/webapp”.

Let’s now verify that the WebApplicationContext was really loaded:

@Autowired
private WebApplicationContext webAppContext;

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

Again, here we have the equivalent code without using @SpringJUnitWebConfig:

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

4. Conclusion

In this brief tutorial, we showed how to use the newly introduced @SpringJUnitConfig and @SpringJUnitWebConfig annotations in Spring 5.

The full source code for the examples is available over on GitHub.

Related posts:

Java Program to Implement DelayQueue API
Java Program to Find kth Smallest Element by the Method of Partitioning the Array
Java Program to Implement Expression Tree
Converting Java Date to OffsetDateTime
Java Program to Find SSSP (Single Source Shortest Path) in DAG (Directed Acyclic Graphs)
Java Program to Implement CopyOnWriteArraySet API
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java
Send email with JavaMail
How to Iterate Over a Stream With Indices
Java Program to Check Cycle in a Graph using Graph traversal
Spring Boot - Tracing Micro Service Logs
Java Program to Decode a Message Encoded Using Playfair Cipher
Java Program to Implement HashTable API
Java Program to Convert a Decimal Number to Binary Number using Stacks
Spring Security 5 – OAuth2 Login
Java Program to Compare Binary and Sequential Search
Using the Map.Entry Java Class
Iterable to Stream in Java
Introduction to Netflix Archaius with Spring Cloud
Functional Interfaces in Java 8
So sánh HashSet, LinkedHashSet và TreeSet trong Java
Hướng dẫn Java Design Pattern – Dependency Injection
Hướng dẫn Java Design Pattern – Composite
How to Get the Last Element of a Stream in Java?
Basic Authentication with the RestTemplate
Cài đặt và sử dụng Swagger UI
Converting String to Stream of chars
Java Program to implement Bit Matrix
Java Program to Implement Knapsack Algorithm
Luồng Daemon (Daemon Thread) trong Java
Disable DNS caching
Java Program to Apply Above-Below-on Test to Find the Position of a Point with respect to a Line