【问题标题】:Jndi lookup in junit using spring使用spring在junit中查找Jndi
【发布时间】:2012-03-14 05:00:56
【问题描述】:

如何在 junit 测试类中查找 Jndi 名称?我不想为 junit 使用单独的配置文件并且不提供数据源属性?我特别需要在我的测试类中进行 jndi 查找。

【问题讨论】:

    标签: jakarta-ee


    【解决方案1】:

    这是来自官方 Spring 文档http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/testing.html#mock-objects-jndi 的引用:

    org.springframework.mock.jndi 包包含 JNDI SPI 的实现,您可以使用它为测试套件或独立应用程序设置简单的 JNDI 环境。

    从这个文档中,我使用声明数据源的 Spring 上下文配置类:

    @Configuration
    public class JndiDataConfig {
        @Bean
        public DataSource dataSource() throws Exception {
            Context ctx = new InitialContext();
            return (DataSource) ctx.lookup("java:comp/env/jdbc/datasource");
        }
    }
    

    【讨论】:

      【解决方案2】:

      如果你使用 JBoss,你应该使用 minicontainer。它从 main(作为 J2SE 应用程序)引导您的应用程序服务器。 AFAIK,这个问题没有“标准”解决方案。

      另一种方法可以是只为 JUnit 测试建立专用服务器,在 J2SE 环境中手动配置您的 JNDI 环境(希望您可以弄清楚如何使用您的应用程序服务器)并连接到远程服务器。

      【讨论】:

        【解决方案3】:

        如果您喜欢在应用程序容器等特殊环境之外测试您的类,您可以使用 Simple-JNDI。它为您创建 JNDI 环境并将属性文件中的值绑定到它。因此,如果您将一些配置参数定义为环境对象,您可以模拟应用程序容器的环境。它还可以为您初始化数据源或连接池并将其绑定到 JNDI 上下文,因此您的测试代码可以像往常一样访问它们。请参阅http://github.com/h-thurow/Simple-JNDI 了解更多信息。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多