我已经使用这个 link 在 tomcat 中配置了 MysqlDataSource .我已经编写了 junit 测试用例。当我从 junit 调用下面的连接时,它会抛出以下错误。
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
我使用了下面的代码
class DataConnection {
private static DataSource dataSource;
public DataConnection() {
try {
Context ctx = new InitialContext();
dataSource = (DataSource)ctx.lookup("java:comp/env/jdbc/test");
} catch (NamingException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
new DataConnection();
Connection con=dataSource.getConnection();
return con;
}
}
如何从junit调用tomcat?如何实现?
最佳答案
您提供的代码从 JNDI 获取数据库连接,例如从容器在 tomcat 中运行时。但是,对于单元测试(假设这就是您使用 JUnit 的目的),我宁愿建议使用“依赖注入(inject)”——例如显式地将数据库连接传递给被测代码,或者在测试运行之前手动设置它。
无需依赖 JNDI 来执行您的测试:这不是您想要测试的,相反,您只想验证您的实际代码是否正确运行。
您不需要任何花哨的库(例如 spring)来进行依赖注入(inject),只需稍微调整一下架构即可。这将大大增强应用程序的可测试性并缩短测试的执行时间。
(这是基于我根据您在问题中提供的少量信息对您的情况所做的假设)
关于java - java中如何连接junit和tomcat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15333251/