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

     使用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  和 @Afte r 用法相似。
     这里的@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() {
              //在这里进行各种测试
              while (   true ){}
     }

     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()。


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值