如何将不同的 sql 文件与数据一起用于不同的测试文件?
How can I use different sql files with Data for different test files?
我有一个包含大 data.sql 文件的项目,其中我们有近 2000 行插入语句。
这真是太糟了。使用此文件并不好。大多数测试仅依赖于其中的 5-20 个插入语句。这就是为什么我想更改测试,以便在每个(测试)class 中我们可以加载不同的 sql 文件。这怎么可能?
- 我删除了 data.sql 文件,现在它启动时没有任何数据。目前还好...
- 我创建了一个 small.sql 文件,其中只有几个插入内容。我已使用以下代码将它插入到我的测试文件中,但我只收到错误:
@Before
public void beforeTest() throws SQLException {
Connection connection = DriverManager.getConnection(
"jdbc:h2:mem:PROJECT;MVCC=true;DB_CLOSE_DELAY=-1;INIT=RUNSCRIPT FROM 'classpath:init-h2.sql';MODE=Oracle;DB_CLOSE_ON_EXIT=FALSE", "sa", "");
Reader data = new StringReader("small.sql");
RunScript.execute(connection, data);
}
org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "SMALL[*].SQL "; expected "DELETE, DROP, DECLARE, DEALLOCATE, {"; SQL statement:
small.sql [42001-197]
这是一个 spring 启动应用程序 Java 8.
您正在将 small.sql 传递给 RunScript 的执行方法。因为你正在使用 StringReader。您必须使用 FileReader。
Reader data = new FileReader("<pathToFile>/small.sql");
RunScript.execute(connection, data);
我有一个包含大 data.sql 文件的项目,其中我们有近 2000 行插入语句。 这真是太糟了。使用此文件并不好。大多数测试仅依赖于其中的 5-20 个插入语句。这就是为什么我想更改测试,以便在每个(测试)class 中我们可以加载不同的 sql 文件。这怎么可能?
- 我删除了 data.sql 文件,现在它启动时没有任何数据。目前还好...
- 我创建了一个 small.sql 文件,其中只有几个插入内容。我已使用以下代码将它插入到我的测试文件中,但我只收到错误:
@Before
public void beforeTest() throws SQLException {
Connection connection = DriverManager.getConnection(
"jdbc:h2:mem:PROJECT;MVCC=true;DB_CLOSE_DELAY=-1;INIT=RUNSCRIPT FROM 'classpath:init-h2.sql';MODE=Oracle;DB_CLOSE_ON_EXIT=FALSE", "sa", "");
Reader data = new StringReader("small.sql");
RunScript.execute(connection, data);
}
org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "SMALL[*].SQL "; expected "DELETE, DROP, DECLARE, DEALLOCATE, {"; SQL statement:
small.sql [42001-197]
这是一个 spring 启动应用程序 Java 8.
您正在将 small.sql 传递给 RunScript 的执行方法。因为你正在使用 StringReader。您必须使用 FileReader。
Reader data = new FileReader("<pathToFile>/small.sql");
RunScript.execute(connection, data);