在我的单元测试中,我 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/