为了保持JUnit测试之间的独立性,我需要在每次测试开始时创建数据库,并在每次测试结束时销毁它.
应通过执行SQL文件中存在的SQL查询(本机插入查询...)在内存(H2数据库)中创建数据库.
在属性文件中定义我的键值并遵守JPA规范(persistence.xml),如何使用注释/注入为每个JUnit测试创建drop-database?
非常感谢!
Wil*_*ing 26
您应该能够使用Spring的嵌入式数据库配置来指定H2数据源(也在此处显示):
<jdbc:embedded-database id="dataSource" type="H2">
<!-- Modify locations appropriately for your environment -->
<jdbc:script location="classpath:db-schema.sql"/>
<jdbc:script location="classpath:db-test-data.sql"/>
</jdbc:embedded-database>
Run Code Online (Sandbox Code Playgroud)
这应该在您的测试特定testApplicationContext.xml
的适当的名称空间声明.
Spring将在测试套件(测试类)开始时调出测试应用程序上下文时创建H2数据源.因为Spring在测试类的持续时间内缓存应用程序上下文,所以可以对测试类进行注释,@DirtiesContext
以便重新创建应用程序上下文并为每个测试方法重新初始化数据源:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:/your/testApplicationContext.xml"})
@DirtiesContext(classMode=ClassMode.AFTER_EACH_TEST_METHOD)
public class SomeDatabaseTest {
@Autowired
private SomeDao dao;
// Test methods
}
Run Code Online (Sandbox Code Playgroud)
有关Spring的嵌入式数据库功能的更多信息,请访问此处
归档时间: |
|
查看次数: |
15710 次 |
最近记录: |