Spring Testing:如何启用bean的自动扫描

时间:2014-05-01 20:50:04

标签: spring unit-testing spring-test

例如,现在我必须在每个测试类中进行

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

我想摆脱

 @ContextConfiguration(loader=AnnotationConfigContextLoader.class)

并希望Spring扫描我项目中的所有bean。

我该怎么做?

4 个答案:

答案 0 :(得分:40)

你可以这样做:

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

  @Test
  public void testSomething() {

  }

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

  }
}

默认情况下,@ContextConfiguration将查找使用@Configuration注释的静态内部类,这就是为什么此设置才有效。

你可以完全摆脱loader param,这不是必需的

答案 1 :(得分:7)

如果你在xml文件中有弹簧配置,你可以使用类似的东西:

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

如果您使用Java Config,那么您将使用

@ContextConfiguration(classes=Config.class)

我在上面的示例中使用了通用名称,您当然需要适应您项目的配置。

在这两种情况下,都需要为Spring启用Spring的组件扫描以拾取带注释的类。

答案 2 :(得分:4)

如果使用Spring Boot,您也可以简单地添加@SpringBootTest

答案 3 :(得分:0)

    @TestConfiguration 
    @ComponentScan("basepackage")
    public class TestConfig{

    }

添加配置类让 spring 加载应用程序上下文。 这为我解决了这个问题。