Spring的jdbc:initialize-database标签使用
在使用spring的jdbc:initialize-database标签进行单元测试时,发现这个标签与dataSource一同使用时,SQL脚本没有被正确执行,测试过程如下:
applicationContext-jdbc.xml
?java测试代码为:
package com.shagri.showcase.data;import org.junit.Assert;import org.junit.Test;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;@ContextConfiguration("classpath:jdbc/applicationContext-jdbc.xml")public class DataInitTest extends AbstractTransactionalJUnit4SpringContextTests {@Testpublic void testData(){Assert.assertEquals(6,countRowsInTable("ss_user"));}}? ? ?这里的import-data.sql和schema.sql是从springside4里面取出来的两个文件,在import-data.sql对ss_user表有6个insert语句。所以这里单元测试的期望是表中数据条数为6,但是遗憾的是,这里的测试失败,实际得到的数据条数为0。
? ? ?但是如果将xml文件中的dataSource和jdbc:initialize-database注释掉,而启用jdbc:embedded-database标记时,单元测试结果正确 。
? ? ?想与各位探讨一下这两种使用方式的不同之处,以及为什么会出现这样的问题。