例如,现在我必须在每个测试类中进行
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigContextLoader.class)
我想摆脱
@ContextConfiguration(loader=AnnotationConfigContextLoader.class)
并希望Spring扫描我项目中的所有bean。
我该怎么做?
答案 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 加载应用程序上下文。 这为我解决了这个问题。