zoukankan      html  css  js  c++  java
  • 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  和@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() {
                //在这里进行各种測试
                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()。


  • 相关阅读:
    WebService优点和缺点小结
    MongoDB监控之一:运行状态、性能监控,分析
    MongoDB分析工具之三:db.currentOp()
    Linux NFS服务器的安装与配置
    第三方支付 转
    视频监控/存储系统设计要点
    ViewPager禁止滑动以及它与内层滑动控件水平方向上事件冲突的解决方法
    (五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components
    ListView列表拖拽排序
    shell脚本编写汇集
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4239819.html
Copyright © 2011-2022 走看看