win7下配置ASP/ASP.NET环境
2010-01-26 20:04
344 查看
在进行自动化测试时,测试的健壮性很重要,对于数据库驱动程序来说,单元测试的健壮性主要来自于数据库数据。你写测试的时候是一种状态,但数据库的状态会随时改变,如何保证单元测试的健壮性呢? 我们可以在测试前使用dbunit来初化数据,以保证你测试中使用的数据没问题。
1,使用dbunit导出数据库数据:
导出后的数据是xml格式的,如下
2,使用dbunit来初始化数据,我使用的方式是refresh形式的—就是xml数据里有的数据(根据主健与数据库数据比对),就进行update,没有的数据就进行insert操作;
这也就在某种意义上建立了一个虚拟schema,当然你也可以使用单独的schema进行测试,呵呵
3,在自动化测试用集成dunit初始化数据,在实例化容器后,数据将得到初始化!
4, 在测试的时候,就可以直接引用数据库的数据,而不用担心测试的健壮性
小结:当然了,严格意义上的单元测试初始化是在单个测试前进行初始化工作(包括数据初始化)—在setUp方法中初初始化,这样单元测试才具备独立性,可重复性及容易理解。
1,使用dbunit导出数据库数据:
//先保存上一次保存的数据 InitData.initData(); Class.forName("oracle.jdbc.driver.OracleDriver"); Connection jdbcConnection = DriverManager.getConnection( "jdbc:oracle:thin:@192.168.60.54:1521:DEVDB01", "neo_2011_dev", "neo_2011_dev"); DatabaseConnection conn = new DatabaseConnection(jdbcConnection, "neo_2011_dev"); IDatabaseConnection connection = conn; QueryDataSet partialDataSet = new QueryDataSet(connection); partialDataSet.addTable("pds_product", "select * from pds_product p where p.productname='***测试专用'"); partialDataSet.addTable("web_productview", "select * from web_productview w where w.productname = '***测试专用'"); partialDataSet.addTable("mbs_member", "select * from mbs_member m where m.membername='***测试专用'"); partialDataSet.addTable("sto_buyEnter", "select * from sto_buyEnter aa where aa.id = -1"); FlatXmlDataSet.write(partialDataSet, new FileOutputStream("siushop_web.xml"));
导出后的数据是xml格式的,如下
<?xml version='1.0' encoding='UTF-8'?> <dataset> <pds_product ID="18452" PRODUCTCODE="201111STOCK" PRODUCTNAME="罗明亮测试专用" BRANDCODE="BBI" BRANDNAME="By Basi" ONETYPE="FEMALE" SIZEGROUP="ALL" SIZERATIOS="标准尺码组" YEAR="FW11" SEASON="2011秋冬" DESCRIPTION="stock_test" GENDER="F" CURRENCY="RMB" RETAILPRICE="0" WEBRETAILPRICE="188" WEBDISCOUNT="0" REFERENCEPRICE="56" ACTUALPRICE="0" TOMARKETDATE="2011-11-03 00:00:00.0" COSTACCOUNTINGTYPE="1" BESHOW="1" BESALE="1" UPDATEBY="冯星" UPDATETIME="2011-11-29 11:56:04.0" TWOTYPE="WT" THREETYPE="YRFWT" ONETYPENAME="女装" TWOTYPENAME="外套" THREETYPENAME="羽绒服"/> <web_productview ID="602" PRODUCTCODE="201111STOCK" BRANDCODE="BBI" BRANDNAME="By Basi" ONETYPE="FEMALE" TWOTYPE="WT" THREETYPE="YRFWT" SIZEGROUP="80,81,82,83,84,85,86,87" SIZERATIOS="XXS,XSi,S,M,L,XL,XXL,XXXL" YEAR="FW11" SEASON="2011秋冬" DESCRIPTION="stock_test" GENDER="F" CURRENCY="RMB" RETAILPRICE="0" WEBRETAILPRICE="188" WEBDISCOUNT="0" COLORS="天蓝色,好色" TOMARKETDATE="2011-11-03 00:00:00.0" SALESVOLUME="0" BESHOW="1" BESALE="1" ACTIVE="1" PRODUCTNAME="罗明亮测试专用" ONETYPENAME="女装" TWOTYPENAME="外套" THREETYPENAME="羽绒服"/> <mbs_member ID="47927" MEMBERCD="0000047925" MEMBERLEVEL="1" MEMBERNAME="罗明亮测试专用" PASSWORD="E10ADC3949BA59ABBE56E057F20F883E" SEX="1" EMAIL="mingliang.luo@neo-concept.com.cn" CREATETIME="2011-11-05 21:38:22.0" CREATOR="123456" EMPIRICVALUE="0" STATUS="1" PERFECTINFO="1" MEMBERTYPE="2" CREATORID="20001101" ISBLACK="1"/> <sto_buyEnter ID="-1" BUYCODE="CG00002636" STORAGE="电子商务东莞仓" PRODUCTSOURCE="杭州" APPLICANT="罗明亮" APPLYDATE="2011-12-05 00:00:00.0" ENTERSTATE="1" ISBUY="0" ISDIFFERENCE="0" BUYNOTE="1323074291894" CREATOR="20001101" CREATEDATE="2011-12-05 16:38:12.0" PROJECTNUMTOTAL="1000" REALNUMTOTAL="0" DIFFERENCENUMTOTAL="0"/> </dataset>
2,使用dbunit来初始化数据,我使用的方式是refresh形式的—就是xml数据里有的数据(根据主健与数据库数据比对),就进行update,没有的数据就进行insert操作;
这也就在某种意义上建立了一个虚拟schema,当然你也可以使用单独的schema进行测试,呵呵
public SiushopData(String name) { super( name ); System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, "oracle.jdbc.driver.OracleDriver" ); System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, "jdbc:oracle:thin:@192.168.60.54:1521:DEVDB01" ); System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, "neo_2011_dev" ); System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, "neo_2011_dev" ); // System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_SCHEMA, "" ); } @Override protected IDataSet getDataSet() throws Exception { return new FlatXmlDataSetBuilder().build(new FileInputStream("siushop_web.xml")); }
Connection jdbcConnection = DriverManager.getConnection( "jdbc:oracle:thin:@192.168.60.54:1521:DEVDB01", "neo_2011_dev", "neo_2011_dev"); DatabaseConnection conn = new DatabaseConnection(jdbcConnection, "neo_2011_dev"); IDatabaseConnection connection = conn; IDataSet iDataSet = new SiushopData("neo_2011_dev").getDataSet(); DatabaseOperation.REFRESH.execute(connection, iDataSet);
3,在自动化测试用集成dunit初始化数据,在实例化容器后,数据将得到初始化!
private static ApplicationContext context ; static{ context = new ClassPathXmlApplicationContext("applicationContext.xml"); //初始化数据,增强测试的健壮性 try { InitData.initData(); } catch (Exception e) { e.printStackTrace(); } } private BeanFactory(){ } public static Object getBean(String beanName){ return context.getBean(beanName); }
4, 在测试的时候,就可以直接引用数据库的数据,而不用担心测试的健壮性
@Test public void test保存采购入库() throws Exception{ BuyEnter buyEnter = purchaseStorageService.loadPurchaseStorageById(-1l); //直接使用特定数据进行测试,这个数据得到初始化,而不用担心数据不存在或一致 //... }
小结:当然了,严格意义上的单元测试初始化是在单个测试前进行初始化工作(包括数据初始化)—在setUp方法中初初始化,这样单元测试才具备独立性,可重复性及容易理解。
相关文章推荐
- win7下配置ASP/ASP.NET环境
- win7和win2008 r2下配置IIS7(ASP.net运行环境)
- 重新安装win7 x64,配置asp.net开发环境
- win7和win2008 r2下配置IIS7(ASP.net运行环境)
- Win7中的IIS配置asp.net的运行环境
- win7下asp.net开发的环境配置
- Win7中IIS的ASP.NET环境配置简洁版
- asp.net开发web项目-vss集成环境配置
- Win7旗舰版中的IIS7配置asp.net的运行环境
- 使用jQuery for Asp.Net 我的开发环境配置
- asp.net环境配置,看来不太Easy呀
- Win7下配置IIS脚本映射实现Asp.Net的Http管道程序
- win7 IIS 和 ASP.NET的配置
- 黄聪:基于Asp.net的CMS系统We7架设实验(环境WIN7,SQL2005,.NET3.5)(初学者参考贴)
- win7 IIS 配置和ASP.NET的运行配置
- 【转】win7 IIS 配置和ASP.NET的运行配置
- ASP.NET Core 从 gitlab-ci 环境变量读取配置
- Win7旗舰版中的IIS配置asp.net的运行环境
- asp.net 开发中配置开发环境导致的问题集,winxp sp2,iis5.1,vs2005,c# 2.0
- ckeditor+ckfinder配置及使用(asp,asp.net环境)