资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
Unit Test GuidePrepared by: Peng-ChuanYuanKneeymsn.comDate Prepared: Nov 6th, 2007GUI Partition Solution GuideDocument Revision HistoryVer. No.Ver. DatePrepared ByReviewed ByApproved ByAffected Section & Summary of Change0.12007.11.6Peng ChuanYuanDraft create目录1.概述41.1.说明42.写测试Case42.1.了解Junit测试的Framework42.2.TestCase存放路径52.3.TestCase的基类52.4.每个Case类都需要有suite方法52.5.一个TestCase类只执行一次setUp和tearDown的方法52.6.关于Mock对象的说明63.辅助测试工具说明63.1.私有方法测试63.2.DBUnit准备数据库测试辅助工具63.3.基于Spring的Dao测试辅助工具64.测试和测试报告74.1.开发人员可以在Eclipse中进行单个Case的测试。74.2.通过运行Ant来获得所有测试Case的测试报告85.参考网站91. 概述1.1. 说明在实际开发项目中,单体测试一般是基于JUnit的框架,前提是要求开放人员对JUnit测试有一定了解,另外我们提供了一些辅助工具,例如DBUnit,EMMA等辅助工具。 开发人员可以通过在Eclipse中运行ant来进行编译和发布,同时使用ant可以生成junit测试报告和emma覆盖率测试报告。测试的Case要求能有以下特点:(1) 可以进行自动测试,不需要手动处理(2) 每个Case都具有独立性,不能影响其他Case的执行2. 写测试Case2.1. 了解Junit测试的Framework2.2. TestCase的基类所有的测试都继承自Test。为了统一,每个测试方法要以test开头。NgnDaoTestCase基类中的方法:public void doCleanInsert(String dataXmlPath)更新数据库中给定的数据public void doCleanTables(String tableNames)清空给定的Tablespublic NgnBaseDao getDaoBean(String beanName)获得配置文件中的Dao的对象2.3. TestCase 类的命名所有测试类都以 *Test.java 命名,便于统一进行匹配测试.2.4. 每个Case类最好要有suite方法因为我们要通过ant自动进行所有代码的测试, suite是提供所有要测试的方法:public static Test suite() TestSuite suite = new TestSuite(); suite.add(XXXTest.class); / suite.add(new XXXTest(“testxxx”); return suite;2.5. 一个TestCase类只执行一次setUp和tearDown的方法2.6. 关于Mock对象的说明在做Junit测试的时候,尽量能使每个Case只测试固定的代码,不依赖于其他的类或者代码。减少其他代码对本个Case的影响。可以通过继承或者实现的方式来写mock对象。尽量能把mock对象写在TestCase中,作为内部类使用。3. 辅助测试工具说明3.1. 私有方法测试对于私有方法,可以通过反射的方式进行调用。提供了反射用的工具类:ngnops.common.util. NgnReflectUtilspublic static Object invoke(Object target, String methodName);public static Object invoke(Object target, String methodName, Object paramValues)public static Object invoke(Object target, String methodName, Class paramTypes, Object paramValues)public static Object invoke(Object target, Method method, Object paramValues)public static Object invokeStatic(Class clazz, String methodName, Object paramValues)public static Object invokeStatic(Class clazz, String methodName, Class paramTypes, Object paramValues)public static Object invokeStatic(Class clazz, String methodName)public static Object invokeStatic(Method method, Object paramValues)3.2. DBUnit准备数据库测试辅助工具可以通过DBUnit 包来很方便地准备好数据库中的数据。通过我们提供的ngnops.common.DBUnitSupport类来调用DBUnit。用到的配置文件dbunit.properties放在test/src/ngnops/common目录下。常用方法介绍:(1) 导出数据库数据方法public static void exportAllTables(String outputFilePath) 导出数据库中所有Table的数据public static void exportTables(String tables, String outputFilePath) 导出指定table的数据(2) 导入xml数据文件到数据库public static void doCleanInsert(String dataXmlPath)通过CLEAN_INSERT方法把xml数据文件导入到数据库中,其中参数dataXmlPath是放置在classpath中的xml数据文件。 public static void doCleanTables(String tableNames)通过DELETE_ALL方法清空给定table的所有数据try /Example: do clean and insert DBUnitSupport.doCleanInsert(/test_data/data_for_testTaskWithOneJob.xml); /Example; export all tables DBUnitSupport.exportAllTables(AllTables.xml); /Example; export specified tables DBUnitSupport.exportTables( new StringT_EV_TASK_CTL_JOB, T_EV_TASK_CTL_TASK, AAA.xml); /Example: clean specified tables DBUnitSupport.doCleanTables( new StringT_EV_TASK_CTL_JOB, T_EV_TASK_CTL_TASK); /Example; insert dataset IDataSet dataSet = new FlatXmlDataSet(new File(ACCUSER.xml); DBUnitSupport.execute(DatabaseOperation.CLEAN_INSERT, dataSet); System.out.println(Run over !); catch (Exception e) e.printStackTrace();4. 测试和测试报告4.1. 开发人员可以在Eclipse中进行单个Case的测试。 4.2. 通过运行Ant来获得所有测试Case的测试报告 (1)Junit测试报告 (2)EMMA覆盖率报告5. 参考网站(1) EMMA ( http:/emma.sourceforge.net/ )(2) DBUnit ( http:/www.dbunit.org/ )(3) Ant ( http:/ant.apache.org/ )(4) JUnit ( http:/www.junit.org/ )Page 5 of 10
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号