我有一个WAR项目,我正在尝试将弹簧配置文件存储在/ WebContent / WEB-INF / Spring /文件夹中(根据我的雇主的要求),但是当我这样做时,我还没有找到办法能够在我的junit测试中引用这些文件。今天我被告知我可以修改我的MANIFEST.MF文件,以便包含弹簧配置文件,但是我无法成功引用清单文件中的文件。
我的第一个问题是,是否可以从我的junits引用/ WebContent / WEB-INF / Spring /文件夹中的文件?如果可能,如何清单文件知道在哪里查找文件?这些链接是相对的吗?
我的WAR的文件夹结构如下(结构由我工作的公司定义):
WARProject - src\ - WebContent\ - - WEB-INF\ - - - Spring\ - - - - App-config.xml - - - - Security.xml - - META-INF\ - - - MANIFEST.MF
我感谢您提供的任何指导。
杰里米
答案 0 :(得分:1)
如果您使用的是Spring 2.5或更高版本以及Spring's TestContext framework,则可以使用@ContextConfiguration(locations = {path/to/file})
如果您自己加载ApplicationContext,那么只需确保/WebContent/WEB-INF/Spring/
在类路径上并使用classpath:contextname.xml
加载文件。
答案 1 :(得分:1)
在任何情况下,无论Spring的版本如何,您都可以使用FileSystemXmlApplicationContext
类来加载应用程序上下文以进行测试,并将字符串"file:WebContent/WEB-INF/Spring/App-config.xml"
作为'configLocation'参数传递给将从XML配置中为您加载应用程序上下文。
考虑到这一点,Matt确实有一个好主意,如果你能够使用基于注释的测试,你应该使用@ContextConfiguration
注释和@RunWith(SpringJUnit4TestRunner.class)
注释来进行Spring的测试框架会自动为您加载上下文,在这种情况下,您还可以在@ContextConfiguration批注中使用上面的字符串。您不需要在类路径中包含应用程序上下文,也不需要将/ WebContent / WEB-INF / Spring /添加到类路径中以进行测试。