Fastpoint
级别: 总版主
精华:
44
发帖: 5033
基地声望: 390 点
基地币: 1683 Bug
基地贡献: 0 点
好评度: 15 点
在线时间:818(小时)
注册时间:2005-10-08
最后登录:2008-07-22
|
jUnit这个东西,重要的在于管理,而非编程。jUnit是一种所谓单元测验。XP理论认为,
你写代码之前,应该写出你的test Case. 我在项目中用到了这个jUnit.实际使用中效果
没有完全发挥。这应该是由于没有贯彻xp的管理思想。我们是在写完一个bean之后,再
写这个test Case的,并且如果需要作修改,没有先修改testCase,再去修改代码。由于
客户不断催促,情急之下就会直接改代码,用人眼测试一下是正确的,就发布了。这导致
最后jUnit TestCase和实际class脱钩。后来能够跑的testCase不足50%了。
jUnit真的是个好东西。你看,当你看到小绿条规律的向前跳动,100%完成的时候,心情
真的很欢畅。因为我可以确定我的代码是正确的,我从来没有感觉这么放心过。
但是有了好工具,而没有好管理,只会带来更加重的灾难。
要想把jUnit用好,我总结几个教训:
1,项目必须良好组织,有强有力的项目spec指引,再开发之前做好screen design ,db design
等等文档,不然你没有办法开始写testCase.如果连Unit的单位都没有,哪儿来的UnitTest?
2,TestCase必须有一定的粒度。你必须决定,哪些是应该被unit test的,哪些是不需要的。
我们采用的是很小的粒度,每一个dbClass都有一个对应的testClass.最后发现这样的粒度是
有问题的,因为往往testCase写的比被测试的class代码都长,而我们的dbClass本来就都是
一些机械的操作。后来我们认识到这种基本的class是应该采用生成机生的。就算需test的话,
要的话,这种机械的classTest本身也应该自动化。
UnitTest的粒度应该以Unit为单位。比如说,认为Order是一个Unit,那么整个操作过程会包含
几个步骤,place order, order approve, order parse, generate Outbound Job,这是一个
“商业逻辑”,TestCase就应该按照这个商业逻辑来写。
3,修改代码,必须严格按照spec更改的流程来做。如果spec不更改,screen design 或者 db design不更改,
你的已经经过unitTest的程序绝对不能改。必须先改UnitTestCase再来改程序。xp编程的精髓之一
在于,确保你的每一行代码都是有价值的,是经过深思熟虑的。而写testCase这件事情就是这样
一个必要的思考过程。
UnitTest在老外的project中,好像总是和CVS一起使用。jBoss有一个功能就是自动跑unitTest
每天晚上他帮你跑所有的unitTest,第二天早上你来一看,好,报告已经发到你的email box里了。
哪些case没有通过,就可以了如指掌。(这个功能是通过ant来做的)如果testCase不写好,
怎么能做到这样呢?
其实我也是UnitTest的初学者,学习一些先进的open source的开发,应该会更有益处。
欢迎大家一起讨论!
|
可不可不要这么样徘徊在目光内 你会察觉到我根本寂寞难耐 即使千多百个深夜曾在梦境内 我有吻过你这毕竟并没存在
人声车声开始消和逝 无声挣扎有个情感奴隶 是我多么的想她 但我偏偏只得无尽叹谓
其实每次见你我也着迷 无奈你我各有角色范围 就算在寂寞梦内超出好友关系 唯在暗里爱你暗里着迷 无谓要你惹上各种问题 共我道别吧别让空虚使我越轨
|
|
[1 楼]
|
Posted: 2006-06-29 21:40 |
| |