如何对使用jndi查找数据源(JDBC)的servlet进行单元测试?
答案 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 :(得分:1)
通过手动创建数据源,在@Before
(或@BeforeClass
)方法中设置JNDI上下文。
(答案只是指导,但我不能提供任何具体的内容,因为你没有提供任何具体的内容)
答案 2 :(得分:0)
如果问题是您需要JNDI,那么有一个简单的独立实现,可以在应用程序和单元测试场景中使用。