我有注释这些注释的类:
@ContextConfiguration(locations = { "classpath:pathToXml.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
你能解释一下我在课堂上添加这些注释后有哪些功能吗?
我有注释这些注释的类:
@ContextConfiguration(locations = { "classpath:pathToXml.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
你能解释一下我在课堂上添加这些注释后有哪些功能吗?
您将获得@WebAppConfiguration
配置 javadoc 中描述的功能。
WebApplicationContext
主要改变了资源的加载方式,即具有未指定资源前缀的资源将从参数中的位置加载src/main/webapp
或从value
参数中的位置加载(否则它们将在 Spring 上下文中不可用,因为通常 webapp 文件夹不包含在类路径中)而不是classpath:
.
您还可以测试使用其他 WebApplicationContext 功能的代码 - ServletContextAware bean、Session 和 Request bean 范围等。
这意味着您将能够使用Spring MVC 测试框架
src/test/resources
因此,在与从带有注释的测试中读取内存数据库的数据库创建脚本的需求作斗争时@WebAppConfiguration
,我注意到在创建的模拟应用程序上下文中,该resourceLoader
字段为空。所以,我创建了一个自定义ApplicationContextInitializer
,将此字段设置为一个AnnotationConfigApplicationContext
实例。
然后所有需要访问常规资源的测试只需添加类似@ContextConfiguration(initializers = { MyConfigurableContext.class })
似乎可以解决问题,但显然是 YMMV