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:

Từ khóa this và super trong Java
Java Program to Implement Aho-Corasick Algorithm for String Matching
Send email with JavaMail
A Quick Guide to Spring Cloud Consul
Java Program to Check Cycle in a Graph using Graph traversal
Sử dụng CountDownLatch trong Java
Hướng dẫn sử dụng biểu thức chính quy (Regular Expression) trong Java
Uploading MultipartFile with Spring RestTemplate
Java Program to Check if a Given Set of Three Points Lie on a Single Line or Not
Java Program to Find Location of a Point Placed in Three Dimensions Using K-D Trees
Một số nguyên tắc, định luật trong lập trình
Java Program to Implement Trie
Hướng dẫn Java Design Pattern – Adapter
4 tính chất của lập trình hướng đối tượng trong Java
Java Program to Implement Park-Miller Random Number Generation Algorithm
Convert String to int or Integer in Java
Java Program to Check Whether a Weak Link i.e. Articulation Vertex Exists in a Graph
Command-Line Arguments in Java
Giới thiệu Java 8
Spring RestTemplate Request/Response Logging
Java Program to Implement vector
Jackson – JsonMappingException (No serializer found for class)
Giới thiệu SOAP UI và thực hiện test Web Service
Easy Ways to Write a Java InputStream to an OutputStream
Converting a Stack Trace to a String in Java
File Upload with Spring MVC
Spring Boot Tutorial – Bootstrap a Simple Application
Java Program to Find Shortest Path Between All Vertices Using Floyd-Warshall’s Algorithm
Hướng dẫn sử dụng String Format trong Java
Phương thức tham chiếu trong Java 8 – Method References
Dockerizing a Spring Boot Application
Guide to java.util.concurrent.Future