如何将不同的sql文件和数据用于不同的测试文件?

时间:2019-09-02 11:51:44

标签: java testing h2 data-files

我有一个带有大data.sql文件的项目,其中有近2000行插入语句。 这真是太糟了。使用此文件不是很好。大多数测试仅依赖这些插入语句中的5-20个。这就是为什么我要更改测试,以便在每个(测试)类中可以加载不同的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]

这是Java 8的Spring Boot应用程序。

1 个答案:

答案 0 :(得分:2)

您正在将small.sql传递给RunScript的execute方法。因为您正在使用StringReader。您必须使用FileReader。

Reader data = new FileReader("<pathToFile>/small.sql");
RunScript.execute(connection, data);