5

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

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

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

4

1 回答 1

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

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

于 2013-04-09T14:35:39.950 回答