一个简单的从服务器的数据库连接池中取数据库连接。要如何来测试?
public static Connection getConnectionFromContext() {
try {
Context initalContext = new InitialContext();
Context envContext = (Context) initalContext
.lookup("java:/comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/mySQLServer");
Connection conn = ds.getConnection();
return conn;
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
分析:
因为依赖的外在环境是服务器中关于应用(数据库连接)的配置文件
junit的几种测试策略中,似乎没有关于对这样一种情况的?这该如何来测试呢?
问题补充:
引用
你不用mock对象是对的,应该用真实环境的连接来单元测试啊,
感谢兄弟的回答,可是单元测试的一个原则就是能够进行独立隔离的测试,如果要配置实际的环境,无法实现自动化测试啊。
有个想法就是修改功能代码,将new InitialContext()采用有参数的构造方式,将所需要的配置信息通过参数传入,那么就能够进行测试了吧。
问题补充:
两位的回答,都感觉是那么一回事。想两种方法都试;但无论是选择哪种方法,都感觉无从下手。
1 在资源文件中如何配置一个datasource的信息,不知道如何下手。能否有个示例:
type="javax.sql.DataSource" />
factory
org.apache.commons.dbcp.BasicDataSourceFactory
driverClassName
com.microsoft.jdbc.sqlserver.SQLServerDriver
url
jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=pubs
username
sa
password
sa
maxActive
20
maxIdle
10
maxWait
-1
而如果用容器内测试,那我的数据库连接的配置文件要放在哪里?