Here we will see how to fix BeanDefinitionOverrideException.

How to fix BeanDefinitionOverrideException:

Problem:

You may get the BeanDefinitionOverrideException exception while running the test cases, when you update the spring boot version from 2.1.x to 2.2.x.

Here are the sample error logs while building the application.

java.lang.IllegalStateException
Caused by: org.springframework.beans.factory.support.BeanDefinitionOverrideException

java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:132)
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:123)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)

Solution:

Add the below property in your test application.properties file.

/src/test/resources/application.properties
spring.main.allow-bean-definition-overriding=true

That’s it, rebuild the application.

References:

Happy Learning 🙂