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:

Hướng dẫn kết nối cơ sở dữ liệu với Java JDBC
Java Program to Check if a Matrix is Invertible
Convert Character Array to String in Java
Java Program to Generate Random Numbers Using Probability Distribution Function
Java 14 Record Keyword
Hướng dẫn sử dụng Lớp FilePermission trong java
HandlerAdapters in Spring MVC
Vòng lặp for, while, do-while trong Java
Toán tử instanceof trong java
Introduction to Using Thymeleaf in Spring
Java Program to Represent Graph Using Adjacency List
Hướng dẫn Java Design Pattern – Abstract Factory
Filtering a Stream of Optionals in Java
Java Program to Implement Miller Rabin Primality Test Algorithm
Spring Boot Tutorial – Bootstrap a Simple Application
Java Program to Remove the Edges in a Given Cyclic Graph such that its Linear Extension can be Found
Lấy ngày giờ hiện tại trong Java
Join and Split Arrays and Collections in Java
How to Manually Authenticate User with Spring Security
Java Program to Find the Mode in a Data Set
Java Program to Implement Fermat Factorization Algorithm
Java Program to Implement Singly Linked List
Hướng dẫn Java Design Pattern – Transfer Object
Convert a Map to an Array, List or Set in Java
Java 8 Stream API Analogies in Kotlin
Loại bỏ các phần tử trùng trong một ArrayList như thế nào?
Spring Security Login Page with React
Java Program to Check if any Graph is Possible to be Constructed for a Given Degree Sequence
The Basics of Java Security
Java Program to Implement PriorityQueue API
Spring REST API with Protocol Buffers
Java Program to Apply Above-Below-on Test to Find the Position of a Point with respect to a Line