Spring Boot 同时运行所有单元测试时未能加载ApplicationContext

rxztt3cl  于 2022-11-05  发布在  Spring
关注(0)|答案(1)|浏览(171)

我有很多单元测试,当我单独运行它们时,它们都能很好地工作。当我用mvn测试一起运行它们时,问题就出现了。当我这样做时,我在一些测试中得到了这个错误,而不是所有的测试,所以我不明白为什么会发生这种情况。
我得到的异常如下:

java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution
Caused by: org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution
Caused by: org.postgresql.util.PSQLException: FATAL: remaining connection slots are reserved for non-replication superuser connections
ni65a41a

ni65a41a1#

查看最后一个(根本)原因:

Caused by: org.postgresql.util.PSQLException: FATAL: remaining 
connection slots are reserved for non-replication superuser 
connections

转到/opt/lce/db/postgresql或您的配置所在的任何位置,编辑postgresql.conf文件。查找max_connections参数(默认值应为40)。将其增加到50,重新启动服务器,然后尝试再次运行list-client。Source
请不要将max_connections设置得太高,因为它会消耗资源!
编辑:另一件事浮现在脑海中:检查所有的测试,看它们是否真的在每次测试后关闭了使用的数据库连接。

Connection c = // however you get your Connection...
  //... your test code
  @AfterEach
  public void closeDatabaseConnection(){
    c.close();
  }

或者重构您的测试,使它们都只使用一个DB-Connection(例如,通过为所有处理DB-Connection的测试定义一个超类)
对于单元测试,你通常不想使用真实的的数据库连接,但你想模拟数据库。即使你不想,或不能模拟数据库,那么你可能想使用一个快速的内存数据库,而不是使用一个完整的PostgreSQL。在你的测试中尝试h2derby
有关如何为spring-( Boot )配置h2的更多信息,请访问以下站点:spring-testing-separate-data-source

相关问题