当前位置: 首页 > 面试题库 >

如何在春季测试的@Test方法之前仅填充一次数据库?

简学文
2023-03-14
问题内容

我用junit4测试spring服务层的下一个问题是:如何调用仅在所有@Test方法之前填充数据库一次的脚本:我想在所有@Tests之前执行一次此脚本:

JdbcTestUtils.executeSqlScript(jdbcTemplate(), new FileSystemResource(
"src/main/resources/sql/mysql/javahelp-insert.sql"), false);

我试图在我的GenericServiceTest类(由测试类扩展)上使用@PostConstruct。原来,@PostConstruct每次在每个@Test方法之前都被调用。有趣的是,甚至在每个@Test方法之前都调用了GenericServiceTest注释为@Autowired的方法。

我不想在每个测试类之前都填充数据库,而在春季测试启动时只填充一次。

如何使用弹簧测试框架和junit4在所有@Test方法之前仅执行一次以上方法?

谢谢!


问题答案:

使用Springs嵌入式数据库支持

<jdbc:embedded-database id="dataSource">
    <jdbc:script location="classpath:myScript.sql"/>
    <jdbc:script location="classpath:otherScript.sql"/>
</jdbc:embedded-database>

或Springs初始化数据库支持

<jdbc:initialize-database data-source="dataSource">
    <jdbc:script location="classpath:myScript.sql"/>
    <jdbc:script location="classpath:otherScript.sql"/>
</jdbc:initialize-database>

@请参阅http://static.springsource.org/spring/docs/3.0.x/spring-framework-
reference/html/jdbc.html#jdbc-embedded-database-
support



 类似资料:
  • 我这里有一个条件,就像在《下课》和它的@test方法:

  • 问题内容: 我有一个maven spring项目(最新版本),我想编写一些junit测试(最新版本)。 我的问题是我的Spring bean是自动装配的,当我从junit test调用它们时,我得到了空指针异常,因为spring不能自动装配它们。 如何加载上下文,以便自动连线? 问题答案: 您是否学习过Spring参考文档中的“ 测试”一章?这是您应该从以下示例开始的示例: 如果您进入,则需要-但

  • 我们使用maven surefire插件并行运行测试。由配置文件指定。 我希望在surefire并行运行我的测试之前,每次maven的整个执行过程中只能运行一次方法。我怎么能那么做?

  • 问题内容: 我的Spring-Boot-Mvc-Web应用程序在文件中具有以下数据库配置: 这是我所做的唯一配置。我在任何地方都没有进行任何其他配置。尽管如此,Spring和子系统会在每次Web应用程序运行时自动重新创建数据库。即在系统运行时重新创建数据库,而在应用程序结束后它包含数据。 我不了解此默认值,并期望它适合测试。 但是,当我开始运行测试时,我发现数据库仅重建一次。由于没有按预定义的顺序

  • 我正在寻找使用spring/Spring Boot在集成测试中以编程方式填充测试数据的推荐方法。我正在使用HSQLDB(inmemory)。 在spring中执行SQL脚本进行集成测试的可能性如下: 与编写SQL脚本不同,我希望在一个集成测试中以编程方式插入多个测试方法的数据,如下所示: 这个例子的每个测试在单独执行时都运行得很好。但是第二个(getByIsbn)在一起运行时会失败。因此,这里使用

  • 问题内容: 我有一个Spring / Hibernate网络应用程序,该应用程序具有一些在内存中的HSQL数据库上运行的集成测试。由于hbm2ddl = create,Hibernate使用了这个空白数据库并创建了我的所有测试表和约束。但是,我有一个新的bean,在它的afterPropertiesSet()方法期间检查数据库中的特定配置值,因此,当初始化此bean时,该行需要存在于数据库中。 有