DB2/JavaDB单元测试

DB2/JavaDB单元测试,java,testing,db2,javadb,Java,Testing,Db2,Javadb,我在一个使用DB2+myBatis的项目中工作。目前我正在定义一个测试自动化的概念,我认为使用java DB(前Apache DeBy)作为单元测试的内存数据库。有人有这方面的经验吗?JavaDB可以作为DB2的一种替代品吗?从我看到的情况来看,它使用与DB2相同的方言,但这还不够。当然,我已经尝试过这个,请看,当我尝试为使用DB2的遗留数据库引入使用Derby的集成测试时,我已经尝试过了。使用JavaDB代替DB2的效果将取决于您需要支持多少特定于DB2的SQL和DDL 如果您想要一个可以安装

我在一个使用DB2+myBatis的项目中工作。目前我正在定义一个测试自动化的概念,我认为使用java DB(前Apache DeBy)作为单元测试的内存数据库。有人有这方面的经验吗?JavaDB可以作为DB2的一种替代品吗?从我看到的情况来看,它使用与DB2相同的方言,但这还不够。当然,我已经尝试过这个,请看,当我尝试为使用DB2的遗留数据库引入使用Derby的集成测试时,我已经尝试过了。使用JavaDB代替DB2的效果将取决于您需要支持多少特定于DB2的SQL和DDL


如果您想要一个可以安装在开发人员机器上的DB2版本,您可以尝试,这是一个免费的DB2版本,您可以在本地使用。

根据经验,您应该使用生产中使用的相同技术测试系统。这并不意味着部分测试可以使用模拟对象,我想在开发者的环境中使用这个数据库。当许多开发人员同时运行单元测试时,只是试图找到问题的最佳解决方案。因此,概念是在开发人员的设置中使用这个数据库,并在持续集成中使用DB2。在开发人员框上使用内存中的数据库进行单元测试是一个好主意。但是,对于构建服务器/连续集成环境,您可能需要使用目标服务器的实际部署实例。请注意,我使用的内存中的服务器没有完全复制我在DB2中尝试使用的所有功能,甚至只保留标准功能,因此有时需要在开发人员机器上部署本地服务器。Java DB中的SQL应该非常接近DB2,因为JavaDB来自Apache Derby,它来自IBMCloudscape。ibmcloudscape与DB2有许多相似之处(都来自IBM),而对于标准SQL,它可以替代DB2。当时,DB2客户机(odbc/jdbc)可以访问Derby数据库。我只是想知道在这种情况下如何维护模式,因为DB2可能包含许多JavaDB不支持的模式特性。我最不想做的事情是为test DB维护一个专用的模式。嗯,我在Derby中遇到的最大问题是它不能执行CTE(这消除了整个查询类)。我被告知存储过程存在一些随机问题,但我自己也不确定。请注意,Derby(或我知道的mem数据库中的其他数据库)也不真正支持存储过程。这是我们最大的缺点。