Sle*_*led 5 java mysql sql sql-server unit-testing
我正在寻找一个内存数据库,用于对我的数据访问层进行单元测试。在生产中,我的大部分类将针对 MySQL 5.1 运行,但有些类将具有对 Microsoft SQL Server 的读取访问权限。
过去,我遇到过不同数据库之间的方言差异导致单元测试失败的问题(导致一次在执行之前使用 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 );
}
}
Run Code Online (Sandbox Code Playgroud)
它在每个测试之前运行,如果它无法连接到数据库,它将跳过测试,而不会通过assumeNoException. 这样,如果您需要在未配置 MySQL 的系统上构建,则可以,但如果您的开发人员正确配置其系统,它将使用已安装的 MySQL 实例。我知道这不是对您问题的直接答案,但认为它无论如何可能有用......