欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    Junit单元测试管理.ppt

    • 资源ID:5377430       资源大小:836.01KB        全文页数:25页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Junit单元测试管理.ppt

    单元测试管理要求,2014-05-14,单元测试的好处可以提高代码质量;有助于设计简单清晰而易用的接口;模块切分的足够小但是模块间保持极低的耦合度;测试代码是“活”的软件文档,它硬性规定了实现代码必须满足的需求,达不到就报错。降低重构难度,可肆无忌惮的重构;减少维护成本;很容易构建集成测试,及自动测试。成熟的开源框架或工具都有良好的单元测试代码,是很好的学习工具。,单元测试的意义,基本思想:在开发功能代码之前,先编写测试代码。在明确要开发某个功能后,首先想如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。再循环进行添加其他功能,直到完全部功能的开发。基本过程:明确当前要完成的功能;针对此功能的测试用例编写;测试代码编译不通过;编写对应的功能代码;测试通过;对代码进行重构,并保证测试通过;循环完成所有功能的开发。,单元测试过程,Junit测试流程,4.0以上版本可以用注释(test)的方式来进行标注,Juint在eclipse的使用,JUnit的使用,Assert 断言 JUnit为我们提供了一些辅助函数,它们用来帮助我们确定被测试的方法是否按照预期的效果正常工作,通常,把这些辅助函数称为断言。常用断言assertEquals(a,b)assertFalse(a)assertTrue(a)assertNotNull(a)assertNull(a)fail(String message)JUnit 4:/value:接下来想要测试的变量值;matcher statement:使用 Hamcrest 匹 配符来表达的对前面变量所期望的值的声明,如果 value 值与 matcher statement 所表达的期望值相符,则测试成功,否则测试失败。assertThat(value,matcher statement),JUnit的使用,/is匹配符表明如果前面待测的object等于后面给出的object,则测试通过 assertThat(testedObj,is(object);/containsString匹配符表明如果测试的字符串包含指定的子字符串则测试通过 assertThat(testedString,containsString(developerWorks);/greaterThan匹配符表明如果所测试的数值testedNumber大于16.0则测试通过 assertThat(testedNumber,greaterThan(16.0);/closeTo匹配符表明如果所测试的浮点型数testedDouble在20.00.5范围之内则测试通过 assertThat(testedDouble,closeTo(20.0,0.5);/hasItem匹配符表明被测的迭代对象含有元素element项则测试通过assertThat(iterableObject,hasItem(element);,TestCase生命周期,单元测试应用,对我们比较有用的一些建议用并行树的方式存放测试代码;面向测试的设计要如何对代码进行测试呢?以前没有写过单元测试的代码怎么办?对于后面新写的代码符合写单元测试的条件,就应该编写单元测试;老代码如果需要重构,则可以优先考虑添加测试代码;用单元测试来防止已捕捉的bug再次发生,也为借用maven等工具能进行持续的构建与测试。,Junit测试实践,组测试TestSuites,组测试TestSuites;异常测试;Mock在单元测试中的应用;Spring对单元测试的支持。,实践-组测试TestSuites,public class AllTests public static void main(String args)junit.textui.TestRunner.run(AllTests.suite();public static Test suite()TestSuite suite=new TestSuite(Test for junitdemo);suite.addTestSuite(StringTest.class);suite.addTestSuite(CalucatorTest.class);return suite;,实践-Exception测试,实践-Mock Objects,允许你测试依赖于其它对象的方法,但那个对象非常难实例化或是太慢如资源类的等。例1 要测试Servlet的doGet()请求:HttpRequest,HttpResponse可以使用Mock;例2 要测试Service层的逻辑,但dao层要依赖数据库或是dao层只提供一个接口没有实现类;,实践-Mock:转帐实例,实践-Mock:转帐实例,public void testTransferOk()final Account senderAccount=new Account(1,200);final Account beneficiaryAccount=new Account(2,100);Mockery context=new Mockery();/使用MockAccountManagerfinal AccountManager mockAccountManager=context.mock(AccountManager.class);context.checking(new Expectations()one(mockAccountManager).findAccountForUser(1);will(returnValue(senderAccount);one(mockAccountManager).findAccountForUser(2);will(returnValue(beneficiaryAccount);one(mockAccountManager).updateAccount(senderAccount);one(mockAccountManager).updateAccount(beneficiaryAccount););AccountService accountService=new AccountService();accountService.setAccountManager(mockAccountManager);/转帐操作accountService.transfer(1,2,50);/验证assertEquals(150,senderAccount.getBalance();assertEquals(150,beneficiaryAccount.getBalance();,实践-Sping单元测试,Web mockJndi mock数据库测试,实践-Sping:web,MockHttpServletRequest,MockHttpServletResponse,MockHttpSession:public void final testGettingToDetails throws ExceptionMyController myController=new MyController();myController.setDetailsView(detailsViewName);MockHttpServletRequest request=new MockHttpServletRequest();MockHttpServletResponse response=new MockHttpServletResponse();request.setMethod(POST);request.addParameter(viewDetails,true);ModelAndView modelAndView=myController.handleRequest(request,response);assertEquals(Incorrect view name,detailsViewName,modelAndView.getViewName();,实践-Sping:jndi mock,private ClassPathXmlApplicationContext context;public void testJndi()throws Exception context=new ClassPathXmlApplicationContext(springFiles);SimpleNamingContextBuilder builder=SimpleNamingContextBuilder.emptyActivatedContextBuilder();DataSource ds=(DataSource)context.getBean(dataSource);builder.bind(jndi:jdbc/DataSource,ds);/现在你的数据源就是 jndi:jdbc/DataSource了,实践-Sping:数据库测试,public class MyTransactualControllerTest extends AbstractTransactionalSpringContextTests protected String getConfigLocations()return new String classpath:/test/spring-context.xml;public void testCorrectBehavior()throws Exception/运行该事务性方法 myTransactualController.submitPayment(new Payment(100);assertTrue(myTransactualController.isValid();Junit4的写法:RunWith(SpringJUnit4ClassRunner.class)ContextConfiguration(locations=classpath:app-config.xml,classpath:mvc-config.xml)TransactionalpublicclassAccountServiceTest1 TestpublicvoidtestGetAcccountById()Accountacct=Account.getAccount(1,user01,18,M);service.insertIfNotExist(acct);Accountacct2=service.getAccountById(1);assertEquals(acct,acct2);,Junit4的新特性,兼容以往版本不用强制继承TestCase类使用注解(Annotation)来标注测试对异常(exception)测试改进,public class Junit4Test Before public void init()throws Exception System.out.println(init();Before public void setUp()throws Exception System.out.println(“setUp()”);/两个BeforeAfter public void destroy()throws Exception System.out.println(destroy();/增加Test表示为测试方法Test public void replace()String result=abc.replace(a,b);assertEquals(bbc,result);Test(expected=ArithmeticException.class)public void divide()int num=9/0;/异常测试,开发规范,需要单元测试的代码1、逻辑复杂的功能;2、容易出错的代码;3、不易理解的代码,即可能过段时间后自己也不易理解的代码,而单元测试代码有助于理解代码的功能和需求;4、后期需求变更可能性相对比较大的,这样后期需求更变修改代码之后就不用太担心写的代码对不对以及是否破坏既存代码逻辑了;5、项目团队根据行业惯例判断,需要进行单元测试的代码。,管理要求:1、项目经理在安排开发计划时,对需要做单元测试的功能做出明确要求,在要求必须开展单元测试的同时预留足够的单元测试时间;2、开发人员在开发过程中,如果发现功能需要做单元测试时,应积极主动的开展单元测试工作,并告知项目经理。监 督:1、项目经理有责任监督项目组成员的单元工作是否按要求开展;2、技术经理有责任监督项目组是否有开展适当的单元测试工作。,开发规范,考 评:1、单元测试工作将与季度考评中的以下考评内容相关联:a、质量:按照公司或部门工作规范开展工作如:管理规范、技术规范(2分);b、质量:工作成果满足相应的工作质量要求如:需求、设计、代码(3分);c、质量:系统提交前有开展单元测试关键功能、集成测试、系统测试以及AB角测试(1分);2、项目经理根据单元测试监督结果对项目组成员进行考评;3、技术经理监督各项目组的单元测试工作,主要核查项目组是否正确开展单元测试工作,并提供事实依据给部门负责人对项目经理进行考评。,开发规范,结束,Q&A,

    注意事项

    本文(Junit单元测试管理.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开