Junit单元测试管理.ppt
《Junit单元测试管理.ppt》由会员分享,可在线阅读,更多相关《Junit单元测试管理.ppt(25页珍藏版)》请在三一办公上搜索。
1、单元测试管理要求,2014-05-14,单元测试的好处可以提高代码质量;有助于设计简单清晰而易用的接口;模块切分的足够小但是模块间保持极低的耦合度;测试代码是“活”的软件文档,它硬性规定了实现代码必须满足的需求,达不到就报错。降低重构难度,可肆无忌惮的重构;减少维护成本;很容易构建集成测试,及自动测试。成熟的开源框架或工具都有良好的单元测试代码,是很好的学习工具。,单元测试的意义,基本思想:在开发功能代码之前,先编写测试代码。在明确要开发某个功能后,首先想如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。再循环进行添加其他功能,直到完全部功能的开发。基本过程:明
2、确当前要完成的功能;针对此功能的测试用例编写;测试代码编译不通过;编写对应的功能代码;测试通过;对代码进行重构,并保证测试通过;循环完成所有功能的开发。,单元测试过程,Junit测试流程,4.0以上版本可以用注释(test)的方式来进行标注,Juint在eclipse的使用,JUnit的使用,Assert 断言 JUnit为我们提供了一些辅助函数,它们用来帮助我们确定被测试的方法是否按照预期的效果正常工作,通常,把这些辅助函数称为断言。常用断言assertEquals(a,b)assertFalse(a)assertTrue(a)assertNotNull(a)assertNull(a)fai
3、l(String message)JUnit 4:/value:接下来想要测试的变量值;matcher statement:使用 Hamcrest 匹 配符来表达的对前面变量所期望的值的声明,如果 value 值与 matcher statement 所表达的期望值相符,则测试成功,否则测试失败。assertThat(value,matcher statement),JUnit的使用,/is匹配符表明如果前面待测的object等于后面给出的object,则测试通过 assertThat(testedObj,is(object);/containsString匹配符表明如果测试的字符串包含指定的
4、子字符串则测试通过 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(i
5、terableObject,hasItem(element);,TestCase生命周期,单元测试应用,对我们比较有用的一些建议用并行树的方式存放测试代码;面向测试的设计要如何对代码进行测试呢?以前没有写过单元测试的代码怎么办?对于后面新写的代码符合写单元测试的条件,就应该编写单元测试;老代码如果需要重构,则可以优先考虑添加测试代码;用单元测试来防止已捕捉的bug再次发生,也为借用maven等工具能进行持续的构建与测试。,Junit测试实践,组测试TestSuites,组测试TestSuites;异常测试;Mock在单元测试中的应用;Spring对单元测试的支持。,实践-组测试TestSuit
6、es,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 Obje
7、cts,允许你测试依赖于其它对象的方法,但那个对象非常难实例化或是太慢如资源类的等。例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)
8、;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(returnVal
9、ue(beneficiaryAccount);one(mockAccountManager).updateAccount(senderAccount);one(mockAccountManager).updateAccount(beneficiaryAccount););AccountService accountService=new AccountService();accountService.setAccountManager(mockAccountManager);/转帐操作accountService.transfer(1,2,50);/验证assertEquals(150,sen
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Junit 单元测试 管理

链接地址:https://www.31ppt.com/p-5377430.html