Jndi使用spring在junit中查找

时间:2012-03-14 05:00:57

标签: java-ee

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

3 个答案:

答案 0 :(得分:2)

以下是官方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环境。

从这个doc我使用Spring上下文配置类来声明一个数据源:

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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