我正在寻找一个内存数据库来对我的数据访问层进行单元测试。在生产中,我的大部分类(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/