仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 814|回复: 9
打印 上一主题 下一主题

[学习教程] 来看利用ConTest举行多线程单位测试

[复制链接]
第二个灵魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:27:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
什么时候上述的三种开发工具能和三为一,什么时候java的竞争力才更强,才有机会拉拢更多的程序员投入到对java的开发上,因为到时的开发工具将会比.net网页编程的更简单。还有一点也很关键,什么时候java推出的jsf能成为真正意义上的标准。
并路程序易于发生bug不是甚么奥密。编写这类程序是一种应战,而且在编程过程当中悄然发生的bug不简单被发明。很多并行bug只要在体系测试、功效测试时才干被发明或由用户发明。到当时修复它们必要奋发的用度--假定可以修复它们--由于它们是云云难于调试。
在本文中,我们先容了ConTest,一种用于测试、调试和丈量并路程序局限的工具。正如您将很快看到的,ConTest不是单位测试的代替者,但它是处置并路程序的单位测试妨碍的一种增补手艺。
为何单位测试还不敷
当问任何Java™开辟者时,他们城市告知您单位测试是一种好的理论。在单位测试上做得当的投进,随后将失掉报答。经由过程单位测试,能较早地发明bug而且能比不举行单位测试更简单地修复它们。可是一般的单位测试办法(即使当完全地举行了测试时)在查找并行bug方面不是很无效。这就是为何它们能逃到程序的早期。
为何单位测试常常漏掉并行bug?一般的说法是并路程序(和bug)的问题在于它们的不断定性。可是关于单位测试目标而言,荒唐性在于并路程序长短常断定的。上面的两个示例注释了这一点。
无润色的NamePrinter
第一个例子是一个类,该类除打印由两部分组成的名字之外,甚么也不做。出于教授教养目标,我们把此义务分在三个线程中:一个线程打印人名,一个线程打印空格,一个线程打印姓和一个新行。一个包含对锁举行同步和挪用wait()和notifyAll()的成熟的同步协定能包管一切事变以准确的顺序产生。正如您在清单1中看到的,main()充任单位测试,用名字"WashingtonIrving"挪用此类:
清单1.NamePrinter
public class NamePrinter {
  private final String firstName;
  private final String surName;
  private final Object lock = new Object();
  private boolean printedFirstName = false;
  private boolean spaceRequested = false;
  public NamePrinter(String firstName, String surName) {
   this.firstName = firstName;
   this.surName = surName;
  }
  public void print() {
   new FirstNamePrinter().start();
   new SpacePrinter().start();
   new SurnamePrinter().start();
  }
  private class FirstNamePrinter extends Thread {
   public void run() {
     try {
      synchronized (lock) {
        while (firstName == null) {
         lock.wait();
        }
        System.out.print(firstName);
        printedFirstName = true;
        spaceRequested = true;
        lock.notifyAll();
      }
     } catch (InterruptedException e) {
      assert (false);
     }
   }
  }
  private class SpacePrinter extends Thread {
   public void run() {
     try {
      synchronized (lock) {
        while ( ! spaceRequested) {
         lock.wait();
        }
        System.out.print( );
        spaceRequested = false;
        lock.notifyAll();
      }
     } catch (InterruptedException e) {
      assert (false);
     }
   }
  }
  private class SurnamePrinter extends Thread {
   public void run() {
     try {
      synchronized(lock) {
        while ( ! printedFirstName || spaceRequested || surName == null) {
         lock.wait();
        }
        System.out.println(surName);
      }
     } catch (InterruptedException e) {
      assert (false);
     }
   }
  }
  public static void main(String[] args) {
   System.out.println();
   new NamePrinter("Washington", "Irving").print();
  }
}
<p>
在性能方面,在windows平台下,.net网页编程可能是占强项,要是把.net网页编程放在sun开发的操作系统上去运行呢?根本就运行不了,.net网页编程对其它操作系统的支持也很弱,性能也可能比不上java。
莫相离 该用户已被删除
沙发
发表于 2015-1-21 07:04:43 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
小女巫 该用户已被删除
板凳
发表于 2015-1-30 10:28:44 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
谁可相欹 该用户已被删除
地板
发表于 2015-2-6 09:56:47 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
小魔女 该用户已被删除
5#
发表于 2015-2-15 22:41:53 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
小妖女 该用户已被删除
6#
发表于 2015-3-4 15:58:54 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
只想知道 该用户已被删除
7#
发表于 2015-3-7 22:21:30 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
老尸 该用户已被删除
8#
发表于 2015-3-8 15:31:52 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
金色的骷髅 该用户已被删除
9#
发表于 2015-3-8 17:11:45 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
兰色精灵 该用户已被删除
10#
发表于 2015-3-16 06:53:24 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 15:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表