JUnit Servlets使用jndi查找数据源进行测试

时间:2010-01-06 07:30:24

标签: java unit-testing servlets jdbc jndi

如何对使用jndi查找数据源(JDBC)的servlet进行单元测试?

3 个答案:

答案 0 :(得分:3)

我在before类方法中运行以下代码。

    try {

        // Create initial context
        System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
            "org.apache.naming.java.javaURLContextFactory");
        System.setProperty(Context.URL_PKG_PREFIXES, 
            "org.apache.naming");            
        InitialContext ic = new InitialContext();

        ic.createSubcontext("java:");
        ic.createSubcontext("java:/comp");
        ic.createSubcontext("java:/comp/env");
        ic.createSubcontext("java:/comp/env/jdbc");

        // Construct DataSource
        OracleConnectionPoolDataSource ds = new OracleConnectionPoolDataSource();
        ds.setURL(""); // <--insert url to database here
        ds.setUser("username"); //<-- self explanatory
        ds.setPassword("password"); //<-- self explanatory

        ic.bind("java:/comp/env/jdbc/examplename", ds); //<--insert name of binding here
    } catch (NamingException ex) {
        ex.printStackTrace();
    } catch (SQLException ex){
        ex.printStackTrace();
    }

我使用Tomcat作为我的服务器,所以我还必须引用位于tomcat \ bin目录中的以下jar文件:

  1. Tomcat的juli.jar
  2. bootstrap.jar
  3. 公地daemon.jar
  4. 我希望这有助于你

答案 1 :(得分:1)

通过手动创建数据源,在@Before(或@BeforeClass)方法中设置JNDI上下文。

(答案只是指导,但我不能提供任何具体的内容,因为你没有提供任何具体的内容)

答案 2 :(得分:0)

如果问题是您需要JNDI,那么有一个简单的独立实现,可以在应用程序和单元测试场景中使用。