




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,测试驱动的设计和开发(TestDrivenDesignandDevelopment)基础篇,CharlesHuangimportjunit.framework.TestSuite;importjunit.framework.Test;publicclassAccountDAOmySqlTestextendsTestCasepublicAccountDAOmySqlTest(Stringname)super(name);,27,Junit(Asample),2.OverridesetUp()andtearDown()如果需要,可以在setUp()中初始化需要的全局变量,资源等(比如DatabaseConnection,FileI/O或MockObjects等)相应的,可以在tearDown()中释放资源(DatabaseConnection,FileI/O和MockObjects等)publicclassAccountDAOmySqlTestextendsTestCaseprivateMysqlFixturemysqlFixtureIns=newMysqlFixture();publicvoidsetUp()throwsExceptionmysqlFixtureIns.setUp();publicvoidtearDown()throwsExceptionmysqlFixtureIns.tearDown();,28,Junit(Asample),3.为被测试的Method写TestCasepublicvoidtestAddAccountNormal()AccountDAOmySqldao=newAccountDAOmySql();Accountaccount=newAccount(USER_NAME,charles,charles_hhb);trydao.addAccount(account);Accountaccount_new=dao.findByUserName(account.getUserName();assertEquals(Expectingcharles,account.getUserName(),account_new.getUserName();assertEquals(Expectingcharles,account.getPassword(),account_new.getPassword();assertEquals(Expectingcharles,account.getEmail(),account_new.getEmail();dao.removeAccount(account.getUserName();catch(finalExceptione)e.printStackTrace();fail(Unexpectedexception:+e.toString();,29,Junit(Asample),publicvoidtestAddAccountAlreadyExist()AccountDAOmySqldao=null;Accountaccount=null;try/AddanAccountdao.addAccount(account);fail(AccountAlreadyExistExceptionexpected);catch(finalSQLExceptione)e.printStackTrace();fail(Unexpectedexception:+e.toString();catch(finalAccountNotFoundExceptionnotFound)notFound.printStackTrace();fail(Unexpectedexception:+notFound.toString();catch(finalAccountAlreadyExistExceptionex)/Passtrydao.removeAccount(account.getUserName();catch(finalSQLExceptionsql)sql.printStackTrace();fail(Unexpectedexception);,30,Junit(ASample),运行这个UnitTest。Junit提供两种运行界面:Swing(junit.swingui.TestRunner)C:sandboxforumjava-classpath./classes;./lib/junit.jar;./lib/mysql_jdbc.jar;./lib/Tidy.jar;./lib/struts.jarjunit.swingui.TestRunnerorg.redsoft.forum.dao.mysql.AccountDAOmySqlTest,31,Junit(ASample),Text界面(junit.textui.TestRunner),32,JunitTestSuite,TestSuite用来运行所有的UnitTestsTestSuite的数型结构:org.redsoft.forum.AllTest|-org.redsoft.forum.dao.AllTest|-org.redsoft.forum.dao.mysql.AllTest|-org.redsoft.forum.util.AllTest每个PackageLevel都由一个AllTestTestSuite在每个TestSuite中,加入在本packagelevel中的所有单元测试例子(UnitTestCases)加入子Packagelevel中的所有AllTestSuite,33,JunitTestSuite,packageorg.redsoft.forum.dao;publicclassAllTestspublicstaticvoidmain(Stringargs)junit.textui.TestRunner.run(suite();publicstaticTestsuite()TestSuitesuite=newTestSuite();/加入子package中的AllTestsuitesuite.addTest(org.redsoft.forum.dao.mysql.AllTests.suite();/加入本packagelevel中的UnitTestcasesuite.addTestSuite(MysqlDataSourceTest.class);returnsuite;/EOC,34,JFCUnit,一个Junit的Extension,用来测试Swing-based的Application。一个最简单的Sample:测试一个LoginScreen,35,JFCUnit,代码片断:设置测试环境privateLoginScreenloginScreen=null;privateTestHelperhelper=null;publicLoginScreenTest(Stringname)super(name);protectedvoidsetUp()throwsExceptionsuper.setUp();helper=newJFCTestHelper();loginScreen=newLoginScreen(LoginScreenTest:+getName();loginScreen.setVisible(true);protectedvoidtearDown()throwsExceptionloginScreen=null;helper.cleanUp(this);super.tearDown();,代码片断:测试图形界面JDialogdialog;JButtonexitButton=(JButton)helper.findNamedComponent(ExitButton,loginScreen,0);assertNotNull(CouldnotfindtheExitbutton,exitButton);JButtonenterButton=(JButton)helper.findNamedComponent(EnterButton,loginScreen,0);assertNotNull(CouldnotfindtheEnterbutton,enterButton);JTextFielduserNameField=(JTextField)helper.findNamedComponent(LoginNameTextField,loginScreen,0);assertNotNull(CouldnotfindtheuserNameField,userNameField);assertEquals(Usernamefieldisempty,userNameField.getText();JTextFieldpasswordField=(JTextField)helper.findNamedComponent(PasswordTextField,loginScreen,0);assertNotNull(CouldnotfindthepasswordField,passwordField);assertEquals(Passwordfieldisempty,passwordField.getText();,36,利用Ant来做NightlyTest,使用Ant中的两个Tasks来完成自动运行NightlyTest产生一个XML个是的结果报告再利用JunitReport来产生一个可供浏览的结果文件。,37,测试例子覆盖率,利用NOUnit来获得测试例子的覆盖率(,38,UnitTests:100%always,任何时候如果UnitTests的出现错误(Junit的进度指示显示红色),XPTeam的首要工作就是修补UnitTests直至Junit的进度指示为绿色。如果不修复出错的测试例子,就会出现滚雪球效应,在未知质量代码基础上的开发只会导致更多的未知质量的代码。软件质量的基石就
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汉字笔顺规则课件
- 汉字的演变史
- 内蒙古巴彦淖尔市乌拉特前旗第三中学2025届九年级下学期学业水平考试模拟(三模)数学试卷(含答案)
- 广东省肇庆市2024-2025学年高一下学期期末统一考试物理试卷(含解析)
- 2024-2025学年广东省茂名市高州市八年级(下)5月月考数学试卷(含答案)
- 硬件按需购买模式的市场研究
- 传统文化保护传承与现代文化创新融合探讨
- 网约车行业监管政策分析
- 汉字书法课件模板楷书庵
- 汉字书写讲解课件
- 初中地理学科课程规划方案
- 定额〔2025〕1号文-关于发布2018版电力建设工程概预算定额2024年度价格水平调整的通知
- 塑胶模具类中英文对照专业术语
- 安全- 中国移动认证考试L1题库(附答案)
- 干部民主推荐表(样式)
- 【公开课】社区教案
- 平面磨床操作时注意事项
- GB/T 29651-2013锰矿石和锰精矿全铁含量的测定火焰原子吸收光谱法
- GB/T 13275-1991一般用途离心通风机技术条件
- 核心素养下的高考语文命题评价体系讲座课件
- 高一英语必修一试卷(含答案)(适合测试)
评论
0/150
提交评论