哪个内存中的Java数据库最接近MySQL和SqlServer以进行单元测试?

我正在寻找一个内存数据库用于单元测试我的数据访问层.在生产中,我的大部分课程都将针对MySQL 5.1运行,但有些课程将具有对Microsoft SQL Server的读取权限.在过去,I’ve had issues with differences dialects betw...

我正在寻找一个内存数据库用于单元测试我的数据访问层.在生产中,我的大部分课程都将针对MySQL 5.1运行,但有些课程将具有对Microsoft SQL Server的读取权限.

在过去,I’ve had issues with differences dialects between different databases tripping up unit testing(导致一次使用AspectJ在执行之前破坏查询!!!)所以我想尽可能地避免这种情况.

所以,我想知道哪个Java内存数据库的行为最接近MySql& SQL Server?我主要担心的是MySQL,因为我们使用它最多,而-AFAIK-它具有最多的非标准语法.这是针对单元测试的,因此可扩展性,性能,效率等并不重要.

解决方法:

我实际上在单元测试中使用MySQL数据库来确保正确性.使用JUnit时,您可以执行以下操作:

@Before
public void initialize() {
    try {
        dataSource.getConnection().close();
        logger.info( "got a connection, so we can assume the configuration is correct..." );
    }
    catch ( Exception e ) {
        logger.warn( "skipping tests as no connection is available.  check spring config: {}", e.getMessage() );
        e.printStackTrace();
        assumeNoException( e );
    }
}

这在每次测试之前运行,如果它无法连接到数据库,它将跳过测试而不会通过assumeNoException导致失败.这样,如果您需要构建一个没有为MySQL配置的系统,您可以,但如果您的开发人员正确配置他们的系统,它将使用已安装的MySQL实例.我知道这不是你问题的直接答案,但认为无论如何都可能有用……

本文标题为:哪个内存中的Java数据库最接近MySQL和SqlServer以进行单元测试?

基础教程推荐