1

我可能想错了,但这就是我所反对的:

我将 Spring Resource 对象注入到我的应用程序中,这些对象为我提供了安全证书的位置,例如:<property name="certificateResource" value="SomeCert.p12" />where certificateResource is of typeorg.springframework.core.io.Resource

在 JUnit 下运行 Resource 是一个类路径资源,一切都很好。当在 Tomcat 下部署为战争时,资源位于 Servlet 上下文中,并且需要WEB-INF/classes/预先添加到证书中。

我尝试了许多资源前缀和通配符组合,但无法找到满足两种上下文的单个字符串。到目前为止,“解决方案”是覆盖src/test/resources/test-applicationContext.xml 中的 bean 定义,但这意味着在两个位置维护字符串。

任何指向更好解决方案的指针将不胜感激,谢谢。

4

1 回答 1

2

我尝试使用 spring-test 和 spring-webmvc 并使用 xml 配置中引用的资源制作一个小但描述性的应用程序,而这些 xml 被生产和测试 spring 配置重用。这是我收到的:github.com/isopov/spring-resource-test

中心是来自测试配置的 prodcution xml 配置的引用:

<import resource="file:src/main/webapp/WEB-INF/applicationContext.xml" />

也可以不从另一个导入一个 xml,但给每个测试几个配置:

@ContextConfiguration(locations = { "classpath:test-applicationContext.xml",
                       "file:src/main/webapp/WEB-INF/applicationContext.xml" })

资源本身位于src/main/resources(我假设您使用的是 Maven 或从“标准目录布局”派生的东西),因此始终可以"classpath:hello.txt"从任何 spring 配置中访问。

我使用 Maven 构建测试了这个,作为 Web 应用程序并在 Eclipse 中运行 UT。

于 2012-12-19T16:19:20.833 回答