gpt4 book ai didi

java - java中如何连接junit和tomcat?

转载 作者:行者123 更新时间:2023-11-28 23:45:01 24 4
gpt4 key购买 nike

我已经使用这个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com