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

标签 java mysql sql sql-server unit-testing

我正在寻找一个内存数据库来对我的数据访问层进行单元测试。在生产中,我的大部分类(class)将针对 MySQL 5.1 运行,但有些类(class)将具有对 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 - 出于单元测试的目的,哪个内存中 Java 数据库最接近 MySQL 和 SqlServer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15904647/

相关文章:

php - xampp phpmyadmin 不起作用

php - 使用php将字符串转换为逗号分隔的数组

具有顺序过滤条件的 MySQL SELECT 查询

sql - 是否可以在 PostgreSQL 中创建可为空的外键约束?

sql - 如果在 SQL 中的 WHERE CLAUSE 中未找到某个值,则显示 NULL

Java 分析 : Private Property Getter has Large Base Time

java - 将列表保存到文件android

java - 安卓,SQL : how to find out if existing column has a value?

java - Hibernate 对象和 Java 反射

java - jOOQ:模拟 DAO 对象