断言的使用

来源:互联网 发布:java utc时间转换 在线 编辑:程序博客网 时间:2024/06/15 08:36

AssertExample.java

 

package org.test;

 

public class AssertExample {

   

   

   

    // -ea java -ea 打开所有用户类的assertion

    // -da java -da 关闭所有用户类的assertion

    // -ea:<classname> java -ea:MyClass1 打开MyClass1assertion

    // -da:<classname> java -da: MyClass1 关闭MyClass1assertion

    // -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

    // -esa java -esa 打开系统类的assertion

    // -dsa java -dsa 关闭系统类的assertion

 

    /** ----------------------------------------------------- */

    // 何时需要使用断言

    // 1.可以在预计正常情况下程序不会到达的地方放置断言 assert false

    // 2.断言可以用于检查传递给私有方法的参数。(对于公有方法,因为是提供给外部的接口,所以必须在方法中有相应的参数检验才能保证代码的健壮性)

    // 3.使用断言测试方法执行的前置条件和后置条件

    // 4.使用断言检查类的不变状态,确保任何情况下,某个变量的状态必须满足。(如age属性应大于0小于某个合适值)

    //

    // 勿用断言处

    // 因此:

    // 1.不要使用断言作为公共方法的参数检查,公共方法的参数永远都要执行

    // 2.断言语句不可以有任何边界效应,不要使用断言语句去修改变量和改变方法的返回值

 

    /*

     * java断言Assertjdk1.4引入的。 jvm 断言默认是关闭的。

     * 断言是可以局部开启的,如:父类禁止断言,而子类开启断言,所以一般说断言不具有继承性 断言只适用于复杂的调试过程。

     * 断言一般用于程序执行结果的判断,千万不要让断言处理业务流程。

     */

    public static void main(String args[]) {

       // 双引号、单引号替换

       String value = "ab'cd'ef\"\"g\"h'ij'klm'n";

       System.out.println(value.replaceAll("'", "&acute;"));

       System.out.println(value.replaceAll("\"", "&quot;"));

 

       // 断言开启方法:run as....Open Run Dialog....Arguments....VMarguments.....-ea

       // -ea是启用断言-da是禁用断言

       boolean isOpen = false;

       assert isOpen = true; // 如果开启了断言,会将isOpen的值改为true

       System.out

              .println(isOpen ? "开启了断言"

                     : "尚未开启断言:断言开启方法:run as....Open Run Dialog....Arguments....VMarguments.....-ea");

       boolean isOk = 4 > 2;

       assert isOk : "程序错误";

       System.out.println("程序正常");

 

       int x = 100;

       System.out.println("Test Assertion that " + x + "==10");

       assert x == 10 : "assertfalse" + x + "不等于10时输出的结果";

       System.out.println("if true,you can print me!");

 

    }

}

 

0 0
原创粉丝点击