What is the difference between SpringJUnit4ClassRunner and SpringRunner

JavaSpringUnit TestingSpring Test

Java Problem Overview


Whenever I see a blog post related to Spring testing I see either of these classes but do not understand the real difference:

@RunWith(SpringRunner.class)
@RunWith(SpringJUnit4ClassRunner.class)

Java Solutions


Solution 1 - Java

There is no difference, from the javadoc:

> SpringRunner is an alias for the SpringJUnit4ClassRunner.

ref: https://docs.spring.io/spring/docs/4.3.0.RC2_to_4.3.0.RELEASE/Spring%20Framework%204.3.0.RELEASE/org/springframework/test/context/junit4/SpringRunner.html

Solution 2 - Java

@RunWith(SpringRunner.class) tells JUnit to run using Spring’s testing support. SpringRunner is the new name for SpringJUnit4ClassRunner, it’s just a bit easier on the eye.

SpringRunner is only available on spring-test 4.3.

SpringRunner class extends SpringJUnit4ClassRunner.

Source code of SpringRunner is

package org.springframework.test.context.junit4;

import org.junit.runners.model.InitializationError;

public final class SpringRunner extends SpringJUnit4ClassRunner {
	 
	public SpringRunner(Class<?> clazz) throws InitializationError {
		super(clazz);
	}

}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHumoyun AhmadView Question on Stackoverflow
Solution 1 - JavaStvnBrkdllView Answer on Stackoverflow
Solution 2 - JavaJoby Wilson MathewsView Answer on Stackoverflow