= '''欢迎访问JUnit新技术研究推广平台''' = == '''新技术介绍''' == JUnit是一个回归测试框架(regression testing framework),能实现测试的自动化。[[BR]] JUnit测试是程序员测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。JUnit 设计的非常小巧,但是功能却非常强大。它大大简化了开发人员执行单元测试的难度,特别是 JUnit 4 使用 Java 5 中的注解(annotation)使测试变得更加简单。这里说的是单元测试:属于软件工程里的白盒测试,也就是测试某个类的某个方法的功能。 == '''团队组成''' == 项目负责:李峰 项目成员:全体BBS成员 == '''Trac 实例系统维护''' == 陈阳 == 为什么要使用Junit进行单元测试 == 我们编写代码时,一定会反复调试保证它能够编译通过。如果是编译没有通过的代码,没有任何人会愿意交付给自己的老板。但代码通过编译,只是说明了它的语法正确;我们却无法保证它的语义也一定正确,没有任何人可以轻易承诺这段代码的行为一定是正确的。[[BR]] 幸运的是,单元测试会为我们的承诺做保证。编写单元测试就是用来验证这段代码的行为是否与我们期望的一致。有了单元测试,我们可以自信的交付自己的代码,而没有任何的后顾之忧。[[BR]] == 单元测试四大优点 == === 优点一 === 它是一种验证行为。[[BR]] 程序中的每一项功能都是测试来验证它的正确性。它为以后的开发提供支援。就算是开发后期,我们也可以轻松的增加功能或更改程序结构,而不用担心这个过程中会破坏重要的东西。而且它为代码的重构提供了保障。这样,我们就可以更自由的对程序进行改进。[[BR]] === 优点二 === 它是一种设计行为。[[BR]] 编写单元测试将使我们从调用者观察、思考。特别是先写测试(test-first),迫使我们把程序设计成易于调用和可测试的,即迫使我们解除软件中的耦合。[[BR]] === 优点三 === 它是一种编写文档的行为[[BR]] 单元测试是一种无价的文档,它是展示函数或类如何使用的最佳文档。这份文档是可编译、可运行的,并且它保持最新,永远与代码同步。[[BR]] === 优点四 === 它具有回归性[[BR]] 自动化的单元测试避免了代码出现回归,编写完成之后,可以随时随地的快速运行测试[[BR]] == 试点应用项目 == === 新游戏大厅 === 新游戏大厅除部分太平洋公共系统代码,如passport,rClient,authentication,以及jsp,js外,其余代码均使用Junit进行测试。[[BR]] === 测试技术 === Junit4 + Spring 测试框架 + JMock [[BR]][[BR]] ==== 为什么选择Junit4 ==== Junit4相通对于junit3有以下几个特点. 1,Junit4不用去继承TestCase[[BR]] 2.Junit4增加Annotation注解,简化单元测试的编写[[BR]] 3,测试的方法名可以随便起,但最好沿用Junit3风格.用testXXX().这样能见名知意.[[BR]] 4,对异常处理方面有了较大改进,如:@Test(expected = Exception.class)通过expected参数大大简化了处理[[BR]] 5,新增@BeforeClass注解和@AfterClass注解,全局只执行一次.这是以前版本没有的功能.[[BR]] 6,@Before注解和@After 注解在每个测试方法前后执行一次.[[BR]] 7.在Junit4中,套件语义被两个新注释所替代。@RunWith和@SuiteClasses [[BR]][[BR]] ==== 为什么选择Spring 测试框架 ==== 1,可以测试基于Spring的应用,通过配置文件和注解自动组装需要的单元测试对象。[[BR]] 2,提供了一些常用的J2EE Mock对象,比如HttpSession的Mock类等[[BR]] 3,可以支持数据库自动回滚,以防止对数据库的单元测试(插入,删除等)不可重复执行,防止修改数据库状态等。[[BR]][[BR]] ==== 为什么选择jMock ==== jMock 用法简单,易于掌握。利用它,我们可以很容易地快速构造出所需的Mock对象,从而得以方便快捷地编写单元测试代码,如太平洋网络项目中大量依赖的Env对象,可以通过jMock模拟 === 新游戏大厅单元测试应用 === [http://rdtrac.pc.com.cn/2011junit/wiki/demo_01 单元测试应用示例——测试domain层对象][[BR]] [http://rdtrac.pc.com.cn/2011junit/wiki/demo_02 单元测试应用示例——测试DAO层对象][[BR]] [http://rdtrac.pc.com.cn/2011junit/wiki/demo_03 单元测试应用示例——测试Service层对象][[BR]] [http://rdtrac.pc.com.cn/2011junit/wiki/demo_04 单元测试应用示例——测试工具类 ][[BR]] [http://rdtrac.pc.com.cn/2011junit/wiki/demo_05 单元测试应用示例——测试Servlet类 ][[BR]] [http://rdtrac.pc.com.cn/2011junit/wiki/demo_06 单元测试应用示例——测试Filter ][[BR]] [http://rdtrac.pc.com.cn/2011junit/wiki/demo_07 单元测试应用示例——测试标签库 ] [http://rdtrac.pc.com.cn/2011junit/wiki/demo_08 单元测试应用示例——用XML代替数据库数据 ] === jWebUnit测试页面 === jWebUnit是以HttpUnitJUnit 单元测试框架为基础,用于为Web应用程序开发测试用例,对 Web应用程序自动进行测试意味着跳过Web浏览器,通过程序来处理Web站点。jWebUnit提供了导航Web应用程序的高级API,并组合了一组断言,用它们来验证url、页面文本、按钮、表单项、cookie等页面元素。可以简单快捷的实现页面级自动化测试用例。[[BR]] [http://rdtrac.pc.com.cn/2011junit/wiki/test_passport 单元测试应用示例 ——测试passport升级部分代码 ] === jmeter 性能测试 === [http://rdtrac.pc.com.cn/2011junit/wiki/jmeter hudson持续集成jmeter进行性能测试 ] == selenium + python 自动化测试 == http://rdtrac.pc.com.cn/2011junit/wiki/webtest