1

实际上在运行 Selenium 测试用例时。我采用在 Glassfish 中配置的实时(主数据库)数据库。如果我们出于测试目的添加记录,那么它将在主数据库中复制。这个不好知道。那么有没有办法为 Selenium 测试用例提供单独的数据库。

4

2 回答 2

2

对于玻璃鱼:

  • 定义 JDBC 连接池资源以引用生产服务器和开发服务器的不同数据库。

  • 如果您没有运行两台不同的服务器,那么您的第一步就是修复它,并运行不同的服务器。和不同的数据库服务器。永远不要将您的开发机器/服务器指向生产数据,甚至是生产数据库服务器。

于 2012-08-14T01:37:03.043 回答
1

如果您尝试进行应在部署时运行的单元测试,则必须在单元测试程序中创建第二个连接。

您可能希望为此使用内存数据库,也许是与 java sdk 捆绑在一起的 HSQL,因此您不需要安装任何驱动程序,也不需要在运行测试后清理任何内容。

如何创建第二个连接取决于您使用的是什么,希望您将有一个中心类或方法来获取数据库连接,如下所示:

Connection c = MyConnectionClass.getConnection();

所以你可以很容易地修改 getConnection 方法,这样你就可以为你的测试指出 HSQL 直接连接,如下所示:

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
    }
}

或者你也可以更正确并为这个类创建一个模拟。但我不确定 selenium 是否支持这个开箱即用。

当然,在开始测试之前,您需要将数据库模式创建到内存数据库中。例如,如果您使用 hibernate 或 JPA,那么这应该很简单(确保添加第二个持久性单元并在这种情况下使用它),如果没有,那么您应该拥有数据库的脚本并像您一样使用 JDBC 运行它们在任何数据库中运行它们。

此外,如果您不想在每次运行测试时都运行脚本,请使用 hsql 但在文件模式下(将 jdbc:hsqldb:mem 更改为 jdbc:hsqldb:file 它将使用文件来存储数据库)。

如果您想了解更多信息,这里有一些关于 hsql 数据库的信息:link

另外,如果您不喜欢 hsql,您可以尝试sqlite(仅适用于文件模式),我认为它有更多访问它的工具

于 2012-08-14T02:10:11.690 回答