当前位置: 首页 > 知识库问答 >
问题:

Spring4 JUnit测试:将SQL加载到H2 db

臧令
2023-03-14

我的Junit测试类是这样配置的,以允许autowired。

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = SpringApp.class)
public class MyServiceTest {
...

我的src/main/resources/application.properties如下所示

spring.jpa.database=POSTGRESQL
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=update

spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost/mydb
spring.datasource.username=BNF0016779
spring.datasource.password=

在测试上下文中,src/test/resources/application.properties只是空的。

//This is not required to execute schema.sql
@Configuration
public class DatabaseTestConfig {
    @Bean
    public DataSource dataSource() {
        return new EmbeddedDatabaseBuilder()
            .setType(EmbeddedDatabaseType.H2)
            .addScript("classpath:schema.sql")
            .build();
    }
}

H2应该是一个内存数据库,不能在两个启动之间保存数据!为什么我会收到这些错误?

有什么想法吗?谢谢

共有1个答案

卫烨
2023-03-14

事实上,Spring Boot将在默认情况下在类路径的根目录中执行一个名为schema.sql的文件。此外,Spring Boot还将自动为应用程序创建嵌入式数据库,除非您另有指示。有关详细信息,请参阅Spring Boot reference手册中的“使用Spring JDBC初始化数据库”一节。

H2应该是一个内存数据库,不能在两个启动之间保存数据!

是和不是。

 类似资料:
  • 我正在使用hazelcast IMap存储我的应用程序数据。 我面临着一个小问题。 问题说明:- 当我启动spring-boot应用程序时,我正在将数据库表数据加载到hazelcast中。 示例:- 但是当我获取相同的数据时,我得到的顺序不同。 那么有没有办法按照插入的顺序获取数据呢?

  • 我有需要测试的REST服务。该服务具有Spring Security身份验证,我需要在测试或模拟中关闭它。我决定嘲笑它,因为我不能关掉它。我为此编写了,但现在未加载上下文: 在我的主要源代码中,我有一些config类加载了一些其他bean,而it类在我的测试中没有加载,我有一个例外: 我做错了什么?有人能帮我吗?我使用了,但在该版本中,无法工作,因为属性不再存在。

  • 问题内容: 我试图用SQL结果填充组合框,我认为我的问题是处理数据表形式的数据。 当我运行程序时,我只是盯着一个悲伤的空组合框。 问题答案: 几乎正确,但是您需要使用DataReader加载数据表。 然后将数据表关联到组合的数据源 另外,您可以将combobox属性设置为将用作将来处理键的列的名称,并将属性设置为要显示为文本以供用户选择的列名称

  • 我正在使用Tibco ComputeDB,这对我来说是新的。它使用sparkDB和snappydata。我想把数据从MS SQL添加到SnappyData的内存表中。 我可以从CSV读取数据,并使用以下命令将其加载到snappyDaya中。 现在,同样的方式,我想从MS SQL读取数据,并想将其添加到snappyData中,但无法找到正确的方法。我遵循了下面的文档,能够连接到MS SQL serv

  • 我想测试我的Spring应用程序。当我将@SpringBootTest添加到我的测试类中时,即使我等待了一个多小时,测试也会挂起并且不会开始!删除SpringBootTest注释会导致初始化@Value字段失败,并且我无法测试任何组件类。我的配置类代码: 我的测试类: 运行测试类时的堆栈跟踪: 当我运行该测试时,该测试处于挂起状态:

  • 问题内容: 我想知道是否有人对我即将从事的工作有任何经验。我有几个csv文件,它们的大小都在一个GB左右,我需要将它们加载到oracle数据库中。虽然加载后我的大部分工作都是只读的,但我仍需要不时加载更新。基本上,我只需要一个很好的工具即可一次将多行数据加载到数据库中。 到目前为止,这是我发现的内容: 我可以使用SQL Loader来完成很多工作 我可以使用批量插入命令 某种批量插入。 以某种方式