如何覆盖spring的导入注释
问题描述:
我有一个弹簧引导应用程序。在使用@SpringBootApplication注解的主类中,我使用导入注释导入了一些配置。如何覆盖spring的导入注释
@SpringBootApplication
@Import({ MyConfiguration.class })
public class MySpringBootApp {
public static void main(String[] args) {
new SpringApplicationBuilder(MySpringBootApp.class).build().run(args);
}
}
现在,当我运行我的JUnit测试类,有注明“@RunWith(SpringRunner.class)”,它加载的应用程序,并在主类进口configuartion类,也被加载(即MyConfiguration )。
@RunWith(SpringRunner.class)
public class MyTest {
....
}
有没有办法覆盖导入,以便在运行测试时不加载MyConfiguration。
答
我知道你需要使用SpringRunner,但你想使用不同的配置。在这种情况下,你只需标注你的测试类@ContextConfiguration(classes = SomeConfigurationClass.class)
因此,这将是这样的:
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = SomeConfigurationClass.class)
public class MyTest {
....
}
如果你不希望任何Spring容器,只是删除@RunWith(...)