仓酷云
标题:
来看利用ConTest举行多线程单位测试
[打印本页]
作者:
第二个灵魂
时间:
2015-1-18 11:27
标题:
来看利用ConTest举行多线程单位测试
什么时候上述的三种开发工具能和三为一,什么时候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
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
作者:
小女巫
时间:
2015-1-30 10:28
Java 编程语言的风格十分接近C、C++语言。
作者:
谁可相欹
时间:
2015-2-6 09:56
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者:
小魔女
时间:
2015-2-15 22:41
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者:
小妖女
时间:
2015-3-4 15:58
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
作者:
只想知道
时间:
2015-3-7 22:21
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
作者:
老尸
时间:
2015-3-8 15:31
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者:
金色的骷髅
时间:
2015-3-8 17:11
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者:
兰色精灵
时间:
2015-3-16 06:53
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2