Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring Testing: How to enable auto-scan of beans

For example, now in each test class I have to do

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigContextLoader.class)

I want to get rid of

 @ContextConfiguration(loader=AnnotationConfigContextLoader.class)

and want Spring to scan all the beans in my project.

How can I do that?

like image 695
user3594176 Avatar asked May 01 '14 20:05

user3594176


2 Answers

You can do this:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class MyTest {

  @Test
  public void testSomething() {

  }

  @Configuration
  @ComponentScan("basepackage")
  public static class SpringConfig {

  }
}

By default @ContextConfiguration will look for static inner classes annotated with @Configuration, which is why this set up will just work.

You can get rid of loader param altogether, that is not required

like image 68
Biju Kunjummen Avatar answered Oct 02 '22 17:10

Biju Kunjummen


If you have your spring configuration in an xml file you would use something like:

@ContextConfiguration(locations="classpath:applicationContext.xml")

If you use Java Config then you would use

@ContextConfiguration(classes=Config.class)

I used generic names in the above samples, you'll of course need to adapt to your project's configuration.

In both cases Spring's component scanning will need to be enabled for Spring to pickup the annotated classes.

like image 39
geoand Avatar answered Oct 02 '22 18:10

geoand