第15章:发现问题

在c被驯化到ANSI C之前,有一个小的玩笑是:我的代码编译过了,因此它也应该可以运行了。

1。JUnit是一套单元测试框架。可以从www.junit.org获取。需要导入junit.framework.* 。最简单的测试
     是把所有测试放到TextCase的某个子类中。每个测试必须是public的,不接受参数,返回void
     并且以一个"test"开头的方法名。JUnit的反射机制会把这些方法标识为单个的测试,然后一个一个允许。

2。JUnit有两个可选的特殊方法,setUp(),tearDown()。setUp()与构造器的唯一区别是:setUp是在测试之前
     直接调用的。tearDown()用来做测试后的清理工作(文件,网络等等)。

3。JDK1.4提供了断言机制。语法为:
      assert    boolean-expression;
      assert    boolean-expression:  information-expression;

4  。 但是JDK1.4中缺省情况断言是关闭的,为了防止编译是的错误,需要带-source 1.4 参数编译。
         在运行的时候必须开启断言,否则没有任何特定的断言标志。最简单的方式是用-ea标志.完整拼写
           -enableassertions
          另一种控制断言的方式是,通过ClassLoader对象来编程实现.JDK1.4为ClassLoader提供了几个新方法,以允许
          动态启动和禁止断言,setDefaultAssertionStatus为所有随后载入的类设置断言状态。

5。按契约设计(DBC),有Eiffel编程语言的创建者Bertrand Meyer发明。
       DBC的基本思想是:有一个明确指定的契约,该契约存在于服务提供者和服务消费者之间。在面向对象的编程中
            服务通常是有对象提供的,而且对象的边界是该类的接口。当客户调用特定的公共方法时,他们总是期望能
           从那个调用中产生特定的行为:对象的中间状态,以及一个可以预测的放回值。
            1)这种行为是可以明确指定的,好像一个契约。
            2)这种行为是通过执行某些运行是的检查来确保的,它检测先验条件,后验条件以及不变式。

6。断言是一种最简单的"检测指令"。一个例子是在JDK1.4中引入了Thread.holdsLock().可以用
          assert  Thread.holdsLock(this);
       断言当前线程是否持有锁。
7。ant是设计优秀的构建自动工具。比c/c++的make功能更强大。可以从http://jakarta.apache.org/ant上下载。
     ant成为java工程上事实的标准,为了跨平台,工程文件格式为xml。工程中创建一个默认名为build.xml的文件,
    键入ant即可。

8。并发版本控制(concurent versions system  CVS),是一种功能强大的版本控制系统,帮助管理大型团队参与的
      设计工程。

9。记录日志是报告程序运行信息的处理过程。老式的调试方式是:
        if(debug)
              System.out.println("debug infomation");
       方法不灵活,且需要重复编译。JDK1.4中记录日志API提供了一种更成熟完善的工具。

10。记录API提供了多个报告基本从高到低是OFF-SEVERE-WARNING-INFO-CONFIG-FINE-FINER-FINESET
          ALL。日志API几个重要的概念:信使对象LogRecord,它的任务仅仅使将信息从一个地方传送到另一个地方。
       处理器Handler,日志输出的目的地。过滤器Filter,格式器Formatter.

11。调试器JDB,概念上像GNU的GDB,是一种命令行调试器。图形化的调试工具会更方便调试,使用eclipse。 

你可能感兴趣的:(第15章:发现问题)