スクリプトを手動で作成する必要があると思います。その後、(プロジェクト内のクラスをコピー)ScriptRunnerを使用することができます。
public class YourIntegrationTestClass {
private String url = "test-db-url";
private String user = "user";
private String pass = "pass";
// run this before the test
public void prepareDB() {
// executes a script stored in test/resources/cucumber
try {
// use your driver here
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, user, pass);
ScriptRunner runner = new ScriptRunner(conn, false, true);
// use your db creation script here
runner.runScript(new BufferedReader(new FileReader("createDB.sql")));
} catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
}
}
// run this after the tests
public void dropDB() {
// use your driver here
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, user, pass);
ScriptRunner runner = new ScriptRunner(conn, false, true);
// use your db drop script here
runner.runScript(new BufferedReader(new FileReader("dropDB.sql")));
} catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
}
}
}
テストの間にスキーマを再作成する必要がありますか、データを切り捨てるだけですか? – FGreg
@FGreg - すべてのデータを切り捨て、import.sqlスクリプトを実行するだけで十分です。回避策はありますが、休止状態で実行する方法がある場合はもっと興味があります... – sm4
JUnitとArquillianの違いはわかりませんが、すべてのデータを切り捨てるJUnitの解決策があります各試験の後に。 JUnitの構造にかなり依存しているので、あなたが興味があれば分かち合うことができます。 – FGreg