关于java断言总结

   你是否想告别system.out.println()测试时代,那么就重断言开始,可能你开始会觉得很麻烦,但是你习惯以后你会得心应手。如果你能看明白 boolean?a:b 这个三元运算的话,那么恭喜你断言你基本掌握了,不相信?那么就往下看看

 

   断言机制是支持jdk1.4以上版本。他有个开关功能(下文会介绍),你想打开就开,你想关就关。这个可比满屏幕的输出语句专业多了。

  

    断言表达式

                  assert expression;

                  assert expression1 : expression2;

 

 

    在两种表达式中,expression1表示一个boolean表达式,expression2表示一个基本类型或者是一个对象(Object) ,基本类型包括boolean,char,double,float,int和long。由于所有类都为Object的子类,因此这个参数可以用于所有对象。

 

     例子:

        

               assert value > 5 ;

               assert accontBalance > 0;

               assert isStatusEnabled();

               assert a>5:"TEST ASSERT"

 

    何为断然的开关,无非就是传递一个参数 例: java -ea 你的JAVA程序。

 

  1. 参数 -esa-dsa
    它们含义为开启(关闭)系统类的assertion功能。由于新版本的Java的系统类中,也使了assertion语句,因此如果用户需要观察它们的运行情况,就需要打开系统类的assertion功能 ,我们可使用-esa参数打开,使用 -dsa参数关闭。 -esa和-dsa的全名为-enablesystemassertions和-disenablesystemassertions,全名和缩写名有同样的功能。
  2. 参数 -ea-ea
    它们含义为开启(关闭)用户类的assertion功能:通过这个参数,用户可以打开某些类或包的assertion功能,同样用户也可以关闭某些类和包的assertion功能。打开assertion功能参数为-ea;如果不带任何参数,表示打开所有用户类;如果带有包名称或者类名称,表示打开这些类或包;如果包名称后面跟有三个点,代表这个包及其子包;如果只有三个点,代表无名包。关闭assertion功能参数为-da,使用方法与-ea类似。
    -ea和-da的全名为-enableassertions和-disenableassertions,全名和缩写名有同样的功能。
    下面表格表示了参数及其含义,并有例子说明如何使用。
    参数例子说明
    -eajava -ea打开所有用户类的assertion
    -dajava -da关闭所有用户类的assertion
    -ea:<classname>java -ea:MyClass1打开MyClass1的assertion
    -da:<classname>java -da: MyClass1关闭MyClass1的assertion
    -ea:<packagename>java -ea:pkg1打开pkg1包的assertion
    -da:<packagename>java -da:pkg1关闭pkg1包的assertion
    -ea:...java -ea:...打开缺省包(无名包)的assertion
    -da:...java -da:...关闭缺省包(无名包)的assertion
    -ea:<packagename>...java -ea:pkg1...打开pkg1包和其子包的assertion
    -da:<packagename>...java -da:pkg1...关闭pkg1包和其子包的assertion
    -esajava -esa打开系统类的assertion
    -dsajava -dsa关闭系统类的assertion
    综合使用java -dsa:MyClass1:pkg1关闭MyClass1和pkg1包的assertion

    其中...代表,此包和其子包的含义。例如我们有两个包为pkg1和pkg1.subpkg。那么pkg1...就代表pkg1和pkg1.subpkg两个包。
    另外,Java为了让程序也能够动态开启和关闭某些类和包的assertion功能,Java修该了Class和ClassLoader的实现,增加了几个用于操作assert的API。下面简单说明一下几个API的作用。
    ClassLoader类中的几个相关的API:
      setDefaultAssertionStatus:用于开启/关闭assertion功能
      setPackageAssertionStatus:用于开启/关闭某些包的assertion功能
      setClassAssertionStatus: 用于开启/关闭某些类的assertion功能
      clearAssertionStatus:用于关闭assertion功能

          讲了这么多,给一个例子就全明白了:

 

                 public static void main(String[] args) {
 
                           int a=5;
                          assert a==6:"错误";
                          System.out.println(a);
  
 }

 

           世界最简单的测试,你可以修改 a的值看看不同的效果;很简单。

 

        注意: 首先 断言是不支持继承,如果如果超类没有开启断然,子类开启,那么只执行子类。

                   断然是可以修改变量值的,什么意思,给大家一个测试断然开始的程序。正好利用断言修改变量值的特性

                

                // public static void main(String[] args) {
//        boolean assertFlag=false;
//        assert assertFlag=true;   
//        if(assertFlag==false){
//         System.out.println("assert have not opened");
//        }else{
//         System.out.println("assert is openning");
//        }
//        
// }

 

  本总结资料来源于网络

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值