Mar*_*rga 8 java hibernate jpa jboss-arquillian
我需要这个进行集成测试.我的环境是JBoss 7,在Hibernate 4上使用JPA的EJB3,H2内存数据库和测试由Arquillian运行.我希望能够删除数据库并再次创建它将基于所有表persistence.xml和实体.我知道我可以在应用程序开始时通过指定:
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
Run Code Online (Sandbox Code Playgroud)
但是我需要在第一次删除后从代码中手动执行此操作并创建发生.
可能吗?什么是最简单的方法?
我认为您需要手动创建脚本。然后您可以使用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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4430 次 |
| 最近记录: |