【发布时间】:2012-03-14 05:00:56
【问题描述】:
如何在 junit 测试类中查找 Jndi 名称?我不想为 junit 使用单独的配置文件并且不提供数据源属性?我特别需要在我的测试类中进行 jndi 查找。
【问题讨论】:
标签: jakarta-ee
如何在 junit 测试类中查找 Jndi 名称?我不想为 junit 使用单独的配置文件并且不提供数据源属性?我特别需要在我的测试类中进行 jndi 查找。
【问题讨论】:
标签: jakarta-ee
这是来自官方 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");
}
}
【讨论】:
如果你使用 JBoss,你应该使用 minicontainer。它从 main(作为 J2SE 应用程序)引导您的应用程序服务器。 AFAIK,这个问题没有“标准”解决方案。
另一种方法可以是只为 JUnit 测试建立专用服务器,在 J2SE 环境中手动配置您的 JNDI 环境(希望您可以弄清楚如何使用您的应用程序服务器)并连接到远程服务器。
【讨论】:
如果您喜欢在应用程序容器等特殊环境之外测试您的类,您可以使用 Simple-JNDI。它为您创建 JNDI 环境并将属性文件中的值绑定到它。因此,如果您将一些配置参数定义为环境对象,您可以模拟应用程序容器的环境。它还可以为您初始化数据源或连接池并将其绑定到 JNDI 上下文,因此您的测试代码可以像往常一样访问它们。请参阅http://github.com/h-thurow/Simple-JNDI 了解更多信息。
【讨论】: