使用UML不仅能够形象化的表达我们的程序思想,并且能够帮助我们提高程序的质量。一个杂乱无章的程序让维护者望而生畏,其成本也可想而知。在面向程序设计(OOD)中有5条原则是帮助我们设计一个高效、简洁的程序:1.单一职责原则(SRP) 2.开放-闭合原则(OCP) 3.Liskov替换原则(LSP)
4.依存关系倒置原则(DIP) 5.接口隔离原则(ISP).
然而这5个原则不是本节讨论的重点,我们将从一个更简单基础的部分入手-JUnit。
     想象一下假设程序中每添加一个功能或改动一些代码,都须要整个程序作支持,那这个开发过程将显得多么繁琐。这种代码也必定不符合OCP原则,因此我们能够利用Junit来创建单元測试来验证我们的代码是否合理。本文将从下面4个方面讨论JUnit的使用方法:1.JUnit的配置
2.
JUnit的使用 3.断言(assert的使用方法) 4.Test的使用方法 5.其它的要点

 1.Junit的配置


     在集成开发工具IDE如eclipse中集成了JUnit,在其他开发工具中需导入Junit包,以下我们演示怎样在MyEclipse中加入JUnit測试:
    
     从图我们能够看出我们有一个名为LearnJunit的项目,以下有一个com.junit.dome的包,包里就仅仅有一个方法:abs();用来求一个给定整数的绝对值。接下来我们将以此为例,展示怎样在MyEclipse中加入JUnit并測试abs()方法。
     我们的操作流程是这种:右键单击项目 ——> NEW ——> JUnit Test Case
     
   

     在弹出的对话框中,我们须要填入包名和类名以及须要測试的类的名称。这里,我们创建一个com.junit.test包,创建一个JunitTest类并舍者须要測试的类为com.junit.demo.JUnit01来进行測试。同一时候MyEclipse会自己主动为我们加入对应的JAR包。
    
     在这里我们就完毕了对JUnit的配置工作。

   2.Junit的使用


     使用JUnit的一般步骤为:1.准备測试条件并未測试分配资源 2.设置断言并进行測试 3.清除回收各种资源

     public class JunitTest
{
     //在这里进行变量的声明
     Junit01 testJunit01;

     @Before
     public void setUp() throws Exception
{
            //在这里进行实例化
            testJunit01 = new Junit01();
     }

     @After
     public void tearDown() throws Exception
{
            //着这里进行各种资源的回收
            testJunit01 = null;
     }

     @Test
     public void test()
{
            //在这里进行各种測试
            assertEquals(-2,testJunit01.abs(-2));
     }
  }

     我们单击右键 ——> Run As ——> JUnit Test.系统将自己主动为我们准备@Before中的环境,并执行@Test中的測试。进度条为绿,则说明測试通过。进度条为红,则可能为Failure,也可能为Error。前者则说明assertEquals设置的断言有误,代码本身没错,我们仅仅须要检查逻辑。后者则说明代码本身有错误,存在异常。

3.断言(assert的使用方法)


     JUnit中提供了大量断言,它表示方法执行后的值是否满足我们的期望。断言的使用方法大同小异,以下我们列举一些经常使用的断言:

     assertEquals                    要注意对应类型的精度范围
     assertNull,assertSame   是否引用的同一个对象
     assertTrue , assertFail      经常使用在不可能到达的地方,如捕获异常后

4.Test的使用方法


     在JUnit 4之前,JUnit一直是运用反射机制如testXXX来寻找须要測试的方法。JUnit 4引入了注解模式,仅仅须要在方法名称前加上@Test  注解即表示此为測试方法而无需在意方法的名称。@Before  和@After 使用方法相似。
     这里的@Test 还有两种使用方法,即能够传递两个參数:1.experted 2.timeout

expected



     表示期望捕获的异常,假设没有捕获异常或者捕获的异常并非期望的,都会产生Failure。比如:
     
     @Test(expected=IndexOutOfBoundsException. class)
     public void test()
{
            //在这里进行各种測试
            new ArrayList<>().get(2);
     }

     这里必定会引起IndexOutOfBoundsException,因此測试成功。

timeout


     表示方法运行的毫秒数,超过设置的值就会产生Failure。比如

     @Test(timeout=1000)
     public void test()
{
            //在这里进行各种測试
            whiletrue){}
     }

5.其它的要点


     关于setUp()和tearDown()调用次数的问题:
 
    public class JunitTest
{
     //在这里进行变量的声明

     @Before
     public void setUp() throws Exception
{
            //在这里进行实例化
           System. out.println( "setUp");
     }

     @After
     public void tearDown() throws Exception
{
            //着这里进行各种资源的回收
           System. out.println( "tearDown");
     }

     @Test
     public void test01()
{
            //在这里进行各种測试
     }

     @Test
     public void test02()
{
            //在这里进行各种測试
     }
  }

     结果输出了两次"setUp","tearDown"。这说明每设置一个測试用例都会调用一次setUp()和tearDown()。

UML之轻松入门(2)-掌握Junit,让我们的开发更高效的更多相关文章

  1. UML之轻松入门(3)-SRP做好厨子,让别人编程去吧

         一个厨子能够做出一手好菜,或许他是新东方毕业的或者是祖传秘方.你让他做上一桌佳肴那是简单.快乐而又高效的,然而让他编程就会成为一种苦恼并且让人想不通的一件事.或许这个比喻不是非常恰当,可是对 ...

  2. Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18)

    摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/10/103014.html Groovy轻松入门--通过与Java的比较,迅速掌握Groovy ...

  3. Groovy轻松入门——搭建Groovy开发环境

    摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/17/104391.html Groovy轻松入门--搭建Groovy开发环境 多日来,我发表了 ...

  4. C++ STL编程轻松入门基础

    C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...

  5. Swift轻松入门——基本语法介绍和详细地Demo讲解(利用WebView打开百度、新浪等网页)

    转载请务必注明出处(all copyright reserved by iOSGeek) 本文主要分为两个部分,第一部分介绍Swift的基本语法,第二部分讲解一个利用WebView来打开百度.sina ...

  6. JavaScript面向对象轻松入门之封装(demo by ES5、ES6、TypeScript)

    本章默认大家已经看过作者的前一篇文章 <JavaScript面向对象轻松入门之抽象> 为什么要封装? 封装(Encapsulation)就是把对象的内部属性和方法隐藏起来,外部代码访问该对 ...

  7. asp.net core轻松入门之MVC中Options读取配置文件

    接上一篇中讲到利用Bind方法读取配置文件 ASP.NET Core轻松入门Bind读取配置文件到C#实例 那么在这篇文章中,我将在上一篇文章的基础上,利用Options方法读取配置文件 首先注册MV ...

  8. AngularJs轻松入门

    AngularJs轻松入门系列博文:http://blog.csdn.net/column/details/angular.html AngularJs轻松入门(一)创建第一个应用 AngularJs ...

  9. Groovy轻松入门——通过与Java的比较,迅速掌握Groovy

    转自 :Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18) 在前几篇文章中,我已经向大家介绍了Groovy是什么,学习Groovy的重要性等内容,还不了 ...

随机推荐

  1. 无奈而又苦逼的二分版本号回退法定位新引入的bug!!!

    昨天測试人员和开发者都发现, 某新版本号有严重的bug.  群里已经開始嚷嚷了, 但没有谁知道是谁引入的问题.本来呢, 这个问题不应该是由我去定位, 但主管让我帮定位一下, 毕竟时间太紧急, 必须尽快 ...

  2. Directx11学习笔记【九】 【转】 3D渲染管线

    原文地址:http://blog.csdn.net/bonchoix/article/details/8298116 3D图形学研究的基本内容,即给定场景的描述,包括各个物体的材质.纹理.坐标等,照相 ...

  3. 怎样解决No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).

    怎样解决No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386). 错误 ...

  4. Android-管理Activity生命周期 -停止和重启Activity

    停止和重启activity在activity的生命周期中很重要,它能让用户感觉你的app总是激活的而且不会丢失他们的进度.activity在下面的这些情况会停止和重启: 用户打开常用app窗口然后从你 ...

  5. IBatis增删改差的实现以及注意点

    此次进讲述对表操作的实现细节.废话不多说,代码见真章. <?xml version="1.0" encoding="utf-8" ?> <sq ...

  6. 编程基础——C/C++,Java,ObjC讨论回调模式

    什么是回调? 因为它是从C开始进入编程世界.术语改只是口.叫习惯了.java里通常叫listener(监听器).C/C++里通常叫callback(回调),ObjC里面叫delegate(托付) 回调 ...

  7. android user如何打开一个版本号root才干

    首先,你要确认你要打开adbd 的root 才干,或者让app 它有可能获得root 才干.   (1). adbd 的root 才干 我们通常debug user 当问题的版本号, 或行为user ...

  8. 每天的学习经验:SharePoint 2013 定义自己添加的产品清单。Callout菜单项、文档关注、SharePoint服务机端对象模型查询

    前言: 前一段时间一直都比較忙.没有什么时间进行总结,刚好节前项目上线.同一时候趁着放假能够好好的对之前遇到的一些问题进行总结. 主要内容有使用SharePoint服务端对象模型进行查询.为Share ...

  9. 实现一个简单的boot

    1.汇编语言.分别汇编器和链接as86和ld86.码如下面: .globl begtext,begdata,begbss,endtext,enddata,endbss .text begtext: . ...

  10. OpenGL 实现Interpolation插值算法

    这是一个静态插值算法的效果,图形学中插值算法应用十分广.如动画.photoshop, autocAD等软件画曲线,还有shader中的渐变上色也是一个硬件支持的插值算法. Interpolation是 ...