Java 如何为测试设置单独的数据库?
实际上,当运行Selenium测试用例时。我使用Glassfish中配置的live(主数据库)数据库。如果我们为测试目的添加记录,那么它将在主数据库中复制。这不好,我知道。那么有没有办法为硒测试用例建立单独的数据库。对于Glassfish:Java 如何为测试设置单独的数据库?,java,database,glassfish,integration-testing,Java,Database,Glassfish,Integration Testing,实际上,当运行Selenium测试用例时。我使用Glassfish中配置的live(主数据库)数据库。如果我们为测试目的添加记录,那么它将在主数据库中复制。这不好,我知道。那么有没有办法为硒测试用例建立单独的数据库。对于Glassfish: 定义JDBC连接池资源,以引用生产服务器和开发服务器的不同数据库 如果您没有运行两台不同的服务器,那么您的第一步就是修复这一问题,并运行不同的服务器。和不同的数据库服务器。永远不要将开发机器/服务器指向生产数据,甚至是生产数据库服务器 如果您正在尝试执行应
- 定义JDBC连接池资源,以引用生产服务器和开发服务器的不同数据库
- 如果您没有运行两台不同的服务器,那么您的第一步就是修复这一问题,并运行不同的服务器。和不同的数据库服务器。永远不要将开发机器/服务器指向生产数据,甚至是生产数据库服务器
Connection c = MyConnectionClass.getConnection();
public Connection getConnection(){
if(testing){
Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:mymemdb", "SA", "");
}else{
//get your connection from your pool or whatever you are doing right now
}
}
因此,修改getConnection方法很容易,因此您可以指出HSQL直接连接用于测试,如下所示:
Connection c = MyConnectionClass.getConnection();
public Connection getConnection(){
if(testing){
Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:mymemdb", "SA", "");
}else{
//get your connection from your pool or whatever you are doing right now
}
}
或者您也可以更正确地为这个类创建一个mock。但我不确定selenium是否支持这种开箱即用的方法
当然,在开始测试之前,您需要将数据库模式创建到内存中的数据库中。例如,如果您使用hibernate或JPA,那么这应该很简单(确保您添加了第二个持久化单元,并在本例中使用它),如果没有,那么您应该为您的数据库提供脚本,并使用JDBC运行它们,就像在任何数据库中运行它们一样
另外,如果您不希望每次运行测试时都运行脚本,请使用hsql,但使用文件模式(更改jdbc:hsqldb:memforjdbc:hsqldb:file,它将使用一个文件存储数据库)
如果您想了解更多信息,以下是有关hsql数据库的一些信息:
另外,如果您不喜欢hsql,您可以尝试(仅适用于文件模式),我认为它有更多的访问工具您的问题不是关于Selenium,而是关于如何设置单独的数据库。您使用的是什么数据库服务器?好的,我可以创建一个新的JDBC连接池。但是,我如何使用Selenium WebDriver连接该连接池。您说过“我使用Glassfish中配置的live(主数据库)数据库”。重点是,在您的测试环境中,您将数据库配置为您的测试数据库,而不是主数据库。好的,谢谢。对于SeleniumWebDriver测试用例,我可以在哪里配置测试环境?请告诉我步骤。恐怕我只能谈JavaEE问题;不接触硒。我可以假设它是一个测试框架,除了我已经说过的,我不能添加任何东西。