【问题标题】:How to create JNDI for Unittests with Spring from XML Configuration?如何从 XML 配置使用 Spring 为单元测试创​​建 JNDI?
【发布时间】:2012-05-04 07:32:53
【问题描述】:

是否有一种简单的方法可以从 Spring XML 文件为单元测试配置 JNDI 环境并导出一些内容(例如数据源)?有 SimpleNamingContextBuilder ,但这需要代码来设置 JNDI 环境,我希望能够将 XML 文件包含到 @ContextConfiguration 中。

【问题讨论】:

  • 您想要不同的数据源用于单元测试而不是生产?
  • @BedwyrHumphreys 当然。但主要的一点是,在生产环境中,应用服务器设置了 JNDI,但这里是 Unittest 本身。
  • 我们使用 Spring 3.1 bean 配置文件来做到这一点
  • @BedwyrHumphreys 您的意思是使用配置文件将依赖 JNDI 的 bean 替换为其他 bean 以避免使用 JNDI?诚然,这有时是一个更好的解决方案,但并非总是如此。

标签: spring unit-testing jndi


【解决方案1】:

我建议使用SimpleJNDI。你可以从Maven Central获得它。

【讨论】:

  • 此项目不再处于积极开发中。有一个 GitHub 克隆,其中包含错误修复和一些由我维护的新功能。见github.com/h-thurow/Simple-JNDI
【解决方案2】:

在许多情况下,您可以通过以下解决方案避免这个问题的根本问题:

  • 使用Spring profiles 将JNDI 引用封装到一个配置文件中,并在JUnit-Tests 中使用另一个配置文件来声明替换。 (这里有点烦人的是你将测试相关的东西引入了生产配置文件。)
  • 在单元测试中包含的 XML 配置文件之后,另一个 XML 配置文件覆盖了声明 JNDI 引用的 bean 定义。

这些变通办法的一个优点是,您可以避免像 JNDI 这样的 JVM 范围的构造,这些构造可能意外地比测试的寿命更长,并且不允许并行执行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 2019-12-10
    相关资源
    最近更新 更多