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 Perform Complex Number Multiplication
Java Program to Implement Iterative Deepening
Java Program to Implement Sieve Of Atkin
Convert String to int or Integer in Java
Spring @Primary Annotation
How to Read a Large File Efficiently with Java
Java Program to Check if an UnDirected Graph is a Tree or Not Using DFS
Java Program to Solve the 0-1 Knapsack Problem
Getting Started with GraphQL and Spring Boot
Java Program to Test Using DFS Whether a Directed Graph is Strongly Connected or Not
Java Program to add two large numbers using Linked List
An Intro to Spring Cloud Zookeeper
Java Program to Check whether Graph is a Bipartite using 2 Color Algorithm
Java Program to Test Using DFS Whether a Directed Graph is Weakly Connected or Not
Java Program to Implement Hash Tables Chaining with Binary Trees
Các kiểu dữ liệu trong java
Functional Interface trong Java 8
Java Program to Represent Graph Using Incidence List
CyclicBarrier in Java
Java Program to Describe the Representation of Graph using Adjacency List
Static Content in Spring WebFlux
Java Program to Find the Median of two Sorted Arrays using Binary Search Approach
Spring Boot Change Context Path
Java Program to Implement Splay Tree
Allow user:password in URL
4 tính chất của lập trình hướng đối tượng trong Java
Converting a Stack Trace to a String in Java
Cài đặt và sử dụng Swagger UI
Java Program to Implement Bresenham Line Algorithm
Using JWT with Spring Security OAuth (legacy stack)
Java Program to Implement TreeMap API
Java Program to Remove the Edges in a Given Cyclic Graph such that its Linear Extension can be Found