加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – JUnit Derby Spring:每次测试后都会丢弃内存数据库

发布时间:2020-12-15 00:58:18 所属栏目:Java 来源:网络整理
导读:在我的单元测试中,我自动安装了一些使用URL的DataSources jdbc:derby:memory:mydb;create=true 创建内存中的DB. 要删除内存中的Derby数据库,您必须连接: jdbc:derby:memory:mydb;drop=true 我想在每次测试后都会发生这种情况,并从一个新的数据库开始.我怎么
在我的单元测试中,我自动安装了一些使用URL的DataSources
jdbc:derby:memory:mydb;create=true

创建内存中的DB.

要删除内存中的Derby数据库,您必须连接:

jdbc:derby:memory:mydb;drop=true

我想在每次测试后都会发生这种情况,并从一个新的数据库开始.我怎么能用Spring做到这一点?

解决方法

如果将Spring与Hibernate一起使用,则有一种与数据库无关的方法.

确保在每个测试方法之前/之后创建/销毁应用程序上下文:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath*:application-context-test.xml"})
@TestExecutionListeners({DirtiesContextTestExecutionListener.class,DependencyInjectionTestExecutionListener.class})
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
public abstract class AbstractTest {

}

指示Hibernate在启动时自动创建模式,并在关闭时删除模式:

hibernate.hbm2ddl.auto = create-drop

现在每次测试之前

>创建应用程序上下文并注入所需的spring bean(spring)
>创建数据库结构(休眠)
>如果存在,则执行import.sql(休眠)

每次测试后

>应用程序上下文被破坏(春天)
>删除数据库模式(休眠).

如果您正在使用事务,则可能需要添加TransactionalTestExecutionListener.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读