java - JUnit + Derby + Spring : drop in-memory db after every test

标签 java spring junit derby in-memory-database

在我的单元测试中,我 Autowiring 了一些使用 URL 的数据源

jdbc:derby:memory:mydb;create=true

创建内存数据库。

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

jdbc:derby:memory:mydb;drop=true

我希望在每次测试后都发生这种情况,并从一个新的数据库开始。我如何使用 Spring 执行此操作?

最佳答案

How to shutdown Derby in-memory database Properly

给了我一个解决方案的提示:

    mydb.drop.url = jdbc:derby:memory:mydb;drop=true

    ...

    <bean id="mydbDropUrl" class="java.lang.String">
    <constructor-arg value="${mydb.drop.url}" />
</bean>

    ...

    @Resource
private String mydbDropUrl;        

    @After
public void tearDown() {
    try {
        DriverManager.getConnection(mydbDropUrl);
    } catch (SQLException e) {
        // ignore
    }
}

缺点是使用了接受字符串(围绕不可变字符串对象的不可变字符串对象)的字符串构造函数。我读到 Spring 3 中有一个 @Value 注释,这可能对这里有帮助,但我使用的是 Spring 2.5。

如果您有更好的解决方案,请告诉我。

关于java - JUnit + Derby + Spring : drop in-memory db after every test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4717865/

相关文章:

java - com.sun.org.apache 是否与 org.apache 包相同?

java - 如何让 JUnit5 与 JDK10(拼图)和 Maven3 一起工作?

java - Spring不从命令行覆盖 Activity 配置文件

java - 将 JUnit 样式的 XML 测试输出渲染为 HTML

java - URL 未使用 Spring MVC 进行映射

java - Jdbc/MySql动态添加列和列名

Spring Boot如何添加可能存在或可能不存在的第二个数据源

java - Spring Boot 授权服务器向外部服务发送请求以获取用户详细信息

java - EasyMock 和修改可变方法参数

java - 编写测试器类来测试编译后的文件