出于单元测试的目的,哪个内存 Java 数据库最接近 MySQL 和 SqlServer?

Sle*_*led 5 java mysql sql sql-server unit-testing

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

过去,我遇到过不同数据库之间的方言差异导致单元测试失败的问题(导致一次在执行之前使用 AspectJ 处理查询!!!)所以我想尽可能避免这种情况。

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

Luc*_*cas 1

实际上,我在单元测试中使用了 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 );
    }
}
Run Code Online (Sandbox Code Playgroud)

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