在Junit测试Hibernate之前和之后运行测试插入脚本

时间:2019-05-12 11:38:34

标签: java hibernate junit

我有一个Junit测试用例,用于测试需要一些初始数据的方法。所需的数据不是我的hibernate项目使用的当前模式的一部分。因此,我无法使用模型对象来创建该插入数据。有什么方法可以在运行junit test之前和之后运行sql脚本?

以下是非休眠方式

Process p = Runtime.getRuntime().exec("psql -U user -d db -h host -f file.sql");

如何使用休眠方式处理此问题?

3 个答案:

答案 0 :(得分:0)

我通过使用休眠api运行本机sql查询来解决了此问题

Query persistableQuery = entityManager.createNativeQuery("QUERY"); 
persistableQuery.executeUpdate();

答案 1 :(得分:0)

The @Sql annotation is my first option. 还没有尝试过,但是由于您使用的是Spring,因此还可以在@Before方法中使用ScriptUtils:

Connection connection = dataSource.getConnection();
ScriptUtils.executeSqlScript(connection, new ClassPathResource("test_db.sql"));

答案 2 :(得分:0)

还有一个名为dbunit的不错的库,它允许在junit测试之前和之后将数据库设置为已知状态。