首页 > 解决方案 > 为所有集成测试类运行一次 liquibase 和休眠

问题描述

在我的遗留 Java 应用程序上运行集成测试需要很长时间。测试类如下所示:

import org.junit.Before;
import org.junit.Test;
import org.junit.jupiter.api.Assertions;
import org.mockito.Mockito;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;

@ContextConfiguration(locations = { "classpath:/my/path/TestConfig.xml" })

公共类 MyIntegrationTest 扩展 AbstractTransactionalJUnit4SpringContextTests {

对于每个测试类,测试套件需要很长时间才能启动,但测试本身执行得很快:

INFO  - LogHelper                  - HHH000204: Processing PersistenceUnitInfo [ name: entityManagerFactory
...]
INFO  - Version                    - HHH000412: Hibernate Core {5.1.17.Final}
INFO  - Environment                - HHH000206: hibernate.properties not found
INFO  - Environment                - HHH000021: Bytecode provider name : javassist
INFO  - SpatialService             - HHH80000001: hibernate-spatial integration enabled : true
INFO  - Version                    - HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
INFO  - Dialect                    - HHH000400: Using dialect: org.hibernate.spatial.dialect.postgis.PostgisDialect
INFO  - BasicTypeRegistry          - HHH000270: Type registration [java.util.UUID] overrides previous : org.hibernate.type.UUIDBinaryType@21f1a060
INFO  - EnversServiceImpl          - Envers integration enabled? : true
INFO  - UpdateTimestampsCache      - HHH000250: Starting update timestamps cache at region: org.hibernate.cache.spi.UpdateTimestampsCache
INFO  - StandardQueryCache         - HHH000248: Starting query cache at region: org.hibernate.cache.internal.StandardQueryCache
INFO  - TranslatorFactoryInitiator - HHH000397: Using ASTQueryTranslatorFactory
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 199.429 s

由于我的应用程序中的每个集成测试类都会重复这些日志,我是否应该假设休眠被多次初始化?如果这是我麻烦的根源,是否有一个设置可以为所有集成测试重用相同的休眠设置,可能会节省很多时间?

标签: javaspringspring-test

解决方案


推荐阅读