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 Check Cycle in a Graph using Topological Sort
Java Program to Show the Duality Transformation of Line and Point
Java Program to Find Inverse of a Matrix
Guide To CompletableFuture
Vòng lặp for, while, do-while trong Java
Java Program to Find the Longest Subsequence Common to All Sequences in a Set of Sequences
Finding the Differences Between Two Lists in Java
Getting Started with Stream Processing with Spring Cloud Data Flow
Java Program to Implement Levenshtein Distance Computing Algorithm
Zipping Collections in Java
Java Program to Implement Word Wrap Problem
Hướng dẫn tạo và sử dụng ThreadPool trong Java
Deploy a Spring Boot WAR into a Tomcat Server
Java Program to Implement Sorted Doubly Linked List
Java Program to Perform Preorder Recursive Traversal of a Given Binary Tree
Request Method Not Supported (405) in Spring
Java Program to Find the Minimum Element of a Rotated Sorted Array using Binary Search approach
Lập trình hướng đối tượng (OOPs) trong java
Java Program to Perform Searching Using Self-Organizing Lists
Spring Security Custom AuthenticationFailureHandler
Giới thiệu thư viện Apache Commons Chain
Java – Try with Resources
Iterable to Stream in Java
Guide to the Synchronized Keyword in Java
Java String to InputStream
Spring WebFlux Filters
New Features in Java 8
Daemon Threads in Java
Java Concurrency Interview Questions and Answers
Hướng dẫn kết nối cơ sở dữ liệu với Java JDBC
Jackson Annotation Examples
Java Program to Implement Hash Tree