首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Spring中集成dbunit进展单元测试

2012-10-09 
Spring中集成dbunit进行单元测试Dbunit的几种数据格式?其他:xml的数据准备和维护太复杂xls的格式什么的一

Spring中集成dbunit进行单元测试

Dbunit的几种数据格式

?

其他:

xml的数据准备和维护太复杂

xls的格式什么的一点不对就报错

?

比较一下,还是CSV的比较靠谱

?

用在Spring里集成DbUnit写一测试基类,同时使用CSV作为准备数据源

?

?

/** * 测试基类. * * @author buming.pl */@RunWith(SpringJUnit4ClassRunner.class)  @ContextConfiguration(locations={"classpath:/springbeans-data-source-test.xml","classpath:/springbeans-rpt-ds-test.xml","classpath:/ehcache.xml","classpath:/springbeans-web-manager.xml","classpath:/springbeans-dozer.xml","classpath:/springbeans-hsf-remote.xml","classpath:/springbeans-tbuic-client-test.xml","classpath:/springbeans-web-bo.xml"})@TransactionConfiguration(transactionManager="txManager",defaultRollback=true)@Transactional@ITestDataSetpublic abstract class BaseTestCase extends AbstractTransactionalDataSourceSpringContextTests{/** The log. */protected final Log log = LogFactory.getLog(getClass());/** The data source. */@Resource    private DataSource dataSource;          /** The database tester. */    private DataSourceDatabaseTester databaseTester;      /**     * Inits the dbunit.     *     * @throws Exception the exception     */    @Before    public void initDbunit() throws Exception {        databaseTester = new DataSourceDatabaseTester(dataSource);        databaseTester.setTearDownOperation(DatabaseOperation.DELETE_ALL);        databaseTester.setSchema("zuanshi_test");        setUpCsvDataSet();    }        /**     * Tear down database.     *     * @throws Exception the exception     */    @After    public void tearDownDatabase() throws Exception {      if (databaseTester != null && databaseTester.getDataSet()!=null) {          databaseTester.onTearDown();      }    }    /**     * 设置CSV格式的初始化数据.     *     * @param file the new up csv data set     * @throws Exception the exception     */    protected void setUpCsvDataSet(String file){    try {    IDataSet dataset = new CsvDataSet(new ClassPathResource(file).getFile());   ;            databaseTester.setDataSet(dataset);            databaseTester.onSetup();  } catch (Exception e) {e.printStackTrace();}     }        /**     * 设置CSV格式的初始化数据.     *     * @param file the new up csv data set     * @throws Exception the exception     */    protected void setUpCsvDataSet() {    try {    File file = new File(this.getClass().getResource("").getPath()+"/csv");    if(file.exists()){                IDataSet dataset = new CsvDataSet(file);                databaseTester.setDataSet(dataset);                databaseTester.onSetup();    }} catch (Exception e) {e.printStackTrace();}    }}

?

?

开始一直报错说:

org.dbunit.database.AmbiguousTableNameException

?

后来发现是其他的Schema下有相同的表名引起的,所以要制定Schema

?

?

databaseTester.setSchema("zuanshi_test");

?

?

使用的时候,只要在测试类下建立 ?csv 目录,在里面放入文件

?

?

table-ordering.txt

?

内容为表名的列表,一个表一行

?

其他就是以 ? ?表名.csv 的文件,一个表一个文件

?

?

例如:

?

memberid,contractver,createtime,updatetime,status,nickname

99999901,1,2011-08-24 11:11:00,2011-08-24 11:11:00,1,zuanshi001

99999902,1,2011-08-24 11:11:01,2011-08-24 11:11:01,1,zuanshi002

99999903,1,2011-08-24 11:11:02,2011-08-24 11:11:02,1,zuanshi003

99999904,1,2011-08-24 11:11:03,2011-08-24 11:11:03,1,zuanshi004

99999905,1,2011-08-24 11:11:04,2011-08-24 11:11:04,1,zuanshi005

99999906,1,2011-08-24 11:11:05,2011-08-24 11:11:05,1,zuanshi006

99999907,1,2011-08-24 11:11:06,2011-08-24 11:11:06,1,zuanshi007

99999908,1,2011-08-24 11:11:07,2011-08-24 11:11:07,1,zuanshi008

99999909,1,2011-08-24 11:11:08,2011-08-24 11:11:08,1,zuanshi009

?

每个方法都会加载数据,方法结束后清除数据

?

使用的时候和使用JUNIT一样

?

?

public class MemberBOImplTest extends BaseTestCase {@Autowiredprivate IMemberBO memberBO;/** * Test method for {@link com.taobao.ad.zuanshi.biz.bo.member.impl.MemberBOImpl#getMemberById(java.lang.Long)}. */@Testpublic void testGetMemberById(){MemberDO memberDO = memberBO.getMemberById(99999901L);assertEquals(memberDO.getMemberid().longValue(), 99999901L);assertEquals(memberDO.getNickname(), "zuanshi001");}}
?

?

?

?

?

热点排行