2017-04-03 123 views
0

我需要测试JPA与H2数据库使用春季和Junit,我在网上找到很多方式,但我不知道最好的一个。用H2数据库测试JPA的最佳方法是什么?

非常感谢。

+0

为什么人们总是认为有一种“最好”的方式?根据你的代码和情况,为什么不尝试一下,看看哪些最适合你? –

回答

0

尝试为您的Spring应用程序创建测试配置文件,并在该配置文件中创建H2数据源并注入相同的内容。如果您的项目是Spring Boot项目,那么可以使用属性文件(如application-dev.properties或application-test.properties)对数据源进行概要分析。否则,在不同的配置文件下创建不同的bean定义。默认情况下,Maven/Gradle使用profile = test运行测试。

因此当运行测试时,H2数据库被拾取。内存数据库中的H2会更好,因为每次测试开始时它都可以丢弃/创建。

评论这里如果你正在寻找任何特定的规格/措施来决定好的方法。

0

确实有两种配置Spring/JPA测试套件的方法,并且很难找出最好的方法。只要它们覆盖了下面提到的要点,你可以自由使用它们中的任何一个,只要尝试一下,看看哪一个套件最适合你。

  • 确保管理JPA数据库配置的配置是外部化的。您可以通过指定不同的弹簧配置文件或覆盖Spring PropertyConfigurer来实现此目的。对于春季启动项目为您测试的基类可能类似于下面的代码片段:


    @ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class, locations = "classpath:applicationContext-integrationtest.xml") 
    @ActiveProfiles("integrationtest") 
    @Ignore("An abstract base class for the tests") 
    public abstract class AbstractIntegrationTest extends AbstractTransactionalJUnit4SpringContextTests { 
    } 
  • 确保性能控制数据源配置在集成测试被覆盖属性文件。主DB具体性能如下:

    • 数据库的用户名(通常设置在数据源/连接池) - sa
    • 数据库密码(一般设置数据源/连接池) - ``
    • 数据库连接URL(通常设置在数据源/连接池) - jdbc:h2:database/integrationtest
    • 数据库JDBC驱动程序类(通常在数据源设置/连接池) - org.h2.Driver
    • 数据库方言(通常在JPA EntityManagerFactory的提供商特异性设置IC配置) - org.hibernate.dialect.H2Dialect
相关问题