我有一个Junit测试用例,用于测试需要一些初始数据的方法。所需的数据不是我的hibernate项目使用的当前模式的一部分。因此,我无法使用模型对象来创建该插入数据。有什么方法可以在运行junit test之前和之后运行sql脚本?
以下是非休眠方式
Process p = Runtime.getRuntime().exec("psql -U user -d db -h host -f file.sql");
如何使用休眠方式处理此问题?
答案 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测试之前和之后将数据库设置为已知状态。