0
ユニットテストでHSQLDBを使用しているときに奇妙な問題が発生しています。HSQLDB + junit:断続的な「接続例外:閉じ」
Iは、以下で間欠的に失敗しているメモリー内HSQLDBを使用してユニットテストを持っている:
org.hsqldb.HsqlException: connection exception: closed
org.hsqldb.HsqlException: connection exception: connection does not exist
と共にマイ疑いがインメモリDBを何とか持続されることです異なるテストランの間。
私のテストでは、次のようになります。
private static final String DRIVER = "org.hsqldb.jdbc.JDBCDriver";
private static final String URL = "jdbc:hsqldb:mem:test2";
@BeforeClass
public static void init() throws SQLException, ClassNotFoundException, IOException {
Class.forName(DRIVER);
populateDatabase();
}
private static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, user, user);
}
private static void populateDatabase() throws SQLException {
try (Connection connection = getConnection(); Statement statement = connection
.createStatement()) {
statement.execute(
"CREATE TABLE employee (name VARCHAR(50) NOT NULL, "
+ " age INT NOT NULL, outputcol FLOAT)");
connection.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
@AfterClass
public static void destroy() throws SQLException, ClassNotFoundException, IOException {
try (Connection connection = DriverManager
.getConnection(URL + ";shutdown=true", user, user);
Statement statement = connection.createStatement()) {
statement.executeUpdate("DROP TABLE employee");
connection.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
エラーが奇妙であるテスト実行の間メモリにぶらぶら何か、に矛盾点にあるという事実を。
私が試してみました:
- がため@Afterと@AfterClassを使用して
- 各クラスの異なるURLにDB名を作る破壊する方法
- に「シャットダウン= true」のオプションを追加しますHSQLDBのテストが
注意を実行するたびに名前を変更し、接続
DriverManager
で接続します。テストが終了したら、テーブルを削除して基本的にDBを空にして破棄したい。 私はこれらのテストをコマンドラインからmvn clean install
で実行しています。次のようにURLに付加;shutdown=true
の