软件绝对领域

大名顶顶的JUnit是Kent Beck和Erich Gamma编写的用java语言实现的单元测试框架。

JUnit3


JUnit3的用法比较简单,就是实现继承框架中TestCase的测试用例(一般实践中命名为XxxTest),然后在其中加入以testXxx命名的测试方法。然后就可以用JUnit框架中的Runner运行测试。

而且在JUnit的测试中如果要加入初始化方法就把方法命名为setup(),如果要加入清理方法就把方法命名为downDown()。
如果要将几个测试用例作为一个集合一次运行就实现一个有public static Test suite()方法签名的方法,在其中创建一个TestSuite实例,然后调用方法addTest把一个个测试用例加入到集合中。


JUnit4

JUnit4在3的基础上融入了JDK1.5的注释特性,大大得改进和强化了JUnit框架。将测试方法由之前的通过继承TestCase确定测试类和通过命名方法确定测试方法的测试编写方式转变为由注释确定这些方面。

常用的注释:
@Before:初始化方法
@After:清理资源
@Test:测试方法
@BeforeClass:针对所有测试,只执行一次,且必须为static void
@AfterClass:针对所有测试,只执行一次,且必须为static void

只要有在类中要测试的方法前加入@Test,这个类就是一个测试用例。而加了对应注释的方法就是各个功能方法,比如初始化和清理。

JUnit4相对以前的增强体现在以下的注释中:

@Test(expected=Exception.class):异常测试,断言异常必定产生

@Test(timeout=n):要求测试在允许超时时间(n秒)中完成

@Ignore:忽略某个测试方法

@Parameters:提供参数测试,也就是用一组参数测试代码


而且JUint4对ant1.7以下的版本有兼容性问题。


以上讲的JUnit用法就是最最常用用法。







posted @ 2007-04-28 23:40 _Kai_ 阅读(1760) | 评论 (0)编辑 收藏
有机会可以接到一个小型商务平台的项目,最近就开始做一个平台的一些基础组件,比如新闻发布模块和用户管理模块。开发团队只有我和另一个同学,一共两个人。而我们对XP开发过程比较有兴趣,刚刚好可以进行结对编程和TDD。

开发已经进行了一个星期左右,已完成新闻发表模块中的新闻管理模块。因为完全没有经验,而且开发时间不够(只能在没有课的上午或者下午开发),开发进度很慢。但是自我感觉不错,因为体验了以前没有体验过的开发过程,从中学到了很多东西。

在整个开发过程中,我们始终坚持“测试先行”原则。首先列出要完成的任务清单,用JUnit写出相应测试代码,然后运行测试,出错,伪实现,重构。一般都是两个人,一个人持有键盘,写一个钟左右的代码,然后一边讨论一边写代码。在完成了一段代码之后有种神奇的感觉,好像不知不觉中代码就被写出来了,这可能是TDD神奇的地方。先写出符合需求的测试,接着按照测试来写代码,就是这么简单。

不过完成了新闻发布模块之后,经过讨论,决定下一步完成前台的UI。对于UI的开发,平时例子学习了不少,自己写的toycode也写了一些,但是在实际应用开发中对我们还是比较陌生。一开始准备用简单的JSP和Servlet来做前端,但是在前端控制器中代码实现有点混乱,现在就卡在UI这里了,最后经过讨论决定用WebWork作前端控制器。

以前在看K.Back的《解析极限编程》时,看到他把结对编程描述的很神奇:
结对程序员:
  • 使彼此都专注于任务
  • 一起头脑风暴,讨论系统的精化
  • 理清思路
  • 在搭档陷入困境时要主动,这样才能减少挫折
  • 使彼此都对团队的实践负责
经过实践之后,就很清楚地体会到k.Back讲到的结对的好处。

五一应该还会继续完成这个项目,而且是一边做一边学。


posted @ 2007-04-28 20:40 _Kai_ 阅读(486) | 评论 (0)编辑 收藏
     摘要: 假期学完了Servlet和JSP,现在来复习一下。

Servlet和JSP,作为JavaEE的重要技术之一,表现层的核心技术之一。其中包括了什么,如何使用。

第一部分 技术背景:
...............................................

(待续未完)  阅读全文
posted @ 2007-03-27 23:18 _Kai_ 阅读(151) | 评论 (0)编辑 收藏

这个学期的学习要好好规划。尽量提高时间的利用率,让自己学习生活得更加有效率。

学习内容:
  • TDD测试驱动开发方法
  • 6种类别重构手法
  • 设计模式的完整学习(主要是除了12个核心模式之前的11个)
  • UML和OOA,OOD

  • WebWork
  • Spring
  • Ioc容器,AOP
  • JUnit技巧(结合TDD的核心概念)

  • 敏捷和XP的内容
  • J2EE核心模式
  • Hibernate学习
实践部分:
  • 用Java重写以前用C++写过的一个图书馆管理系统(LMS)
  • 用Java的XML,JDBC包写一些toy code
学习的内容,有优先级,越上越高。而实践部分尽量在学期末完成,而在实践中先用OO的方法做简单的初步分析和设计,然后用TDD,在构建过程中使用Ant,Eclipse,CVS,JUnit等工具。因为这个学期还要考四级,所以时间会比较紧。

每个星期把计划写在一张纸上,然后每天完成计划后作一个标记。

一天一小步,一星期一中步,一个月就可以踏出一大步。
posted @ 2007-03-27 22:23 _Kai_ 阅读(1067) | 评论 (1)编辑 收藏

OOD应该遵循的十一个基本原则,摘取自Robert C. MartinThe Principles of OOD一文 http://www.butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

类设计原则:

  1. SRP,单一职责原则,一个类应该有且只有一个改变的理由。
  2. OCP,开放封闭原则,你应该能够不用修改原有类就能扩展一个类的行为。
  3. LSP,Liskov替换原则,派生类要与其基类自相容。
  4. DIP,依赖倒置原则,依赖于抽象而不是实现。
  5. ISP,接口隔离原则,客户只要关注它们所需的接口。

包内聚性原则:

  1. REP,重用发布等价原则,重用的粒度就是发布的粒度。
  2. CCP,共同封闭原则,包中的所有类对于同一类性质的变化应该是共同封闭的。 
  3. CRP,共同重用原则,一个包中的所有类应该是共同重用的。

包耦合性原则:

  1. ADP,无环依赖原则,在包的依赖关系图中不允许存在环。
  2. SDP,稳定依赖原则,朝着稳定的方向进行依赖。
  3. SAP,稳定抽象原则,包的抽象程度应该和其稳定程度一致
posted @ 2007-02-22 23:32 _Kai_ 阅读(622) | 评论 (0)编辑 收藏
我的JAVA之路就是从考SCJP开始。

起源
一切都是源于CSDN上的SCJP的广告,那是在国庆长假前几天看到的。在2006年下半年,学生考SCJP是优惠价450。那时就想着趁着这个时机考个证来傍身,优惠800哦。顺便可以开始学习JAVA。

开始学习JAVA
然后就在网上买了几本书,都是很多人都推荐的《Thinking in JAVA 3e》,《Core Java 7e》1,2卷,《Effective Java》。那时还完全不懂,不买Effective JAVA早知道买Java Puzzlers,因为其实Puzzlers是Effective的第二版,两位作者都是就职于Google的JAVA达人。而另外两本书用来入门还不错,两本书都有大量的代码例子,看代码来学习也许是最好的学习编程的方法了。TIJ这本书讲了很多编程技巧和JAVA的一些原理,而CJ这本书讲了很多在应用方面的技巧,两本书都很生动很有趣。

以前C++上我花了很大的精力在学习,一开始接触电脑就在学C++,有两年的C++学习时间。所以对JAVA的语法和面向对象概念能比较好的适应。对C++和JAVA比较直观的比较就是,JAVA的库比起C++的标准强大太多太多了,C++只提供了一些常见的数据结构和算法,而Java几乎提供了所有的基础功能。还有JAVA的API文档相当齐全,对方方面面都讲得很详细,而且有中文化,这相对于学习速度有很大提高。

小插曲
一开始我就计划好,用一个半月的时间学习JAVA基本的知识,然后用一个月的时间复习考试。如果计划延误了就算了,不考了。计划其实不是很顺利,10月份因为学生会很多事要做,而且刚好学校要进行本科评估,抓的比较严不可以太常逃课,又刚刚好有朋友拉我去作一些商业活动。这时忽然因为和女朋友吵架了,所以心情很不好,有些自暴自弃,一下子把身边的事全部推了,把学生会的职务也辞了(在他们的挽留下虽然最后没有辞成功只是暂时离开学生会),什么都不理,专心地学习。结果进度又拉了上来,大概在十一月底就完成了基本的学习。

复习
在十一月份买了那本Sun Certified Programmer for Java 5(Exam 310-055),这是对考试有极大帮助的一本书。这本书的作者就是大名鼎鼎倍受好评的《Head First》系列的作者,也是SCJP的出题人。这本书对055考试中每个考点,哪些必考哪些不考,而且对知识做了很细致的整理。里面的题目也出的很好,基本每个考点都有十几道题目,我基本可以维持在六十多的正确率。随书还附送一个模拟器,模拟真正的考试环境。之后因为对Lang包中的一些类还有一些疑惑就买了一本《The Java Programming Language 4e》。买来这本书初看上去好像讲得很泛很蜻蜓点水式,但是看下去之后发现这正是这本书的最大优点,几乎对JAVA语言的每个方面都有一个明确的概念,这对理解各个细节有很大作用。

QQ群
在一次偶然的机会,在一个论坛上看到了有一些准备考SCJP的人组织的QQ群,在里面认识了一些人。有些考过的,有些和我一样准备考的。在这个群里经常有人提问题,之后就是一大群人在这里热烈地在讨论,气氛好不热烈。这可能也是我考试成功的一个因素,不过我倒是在群里经常为人回答问题的那个

报名

在十二月份,就去问了一些通过考试的人,具体怎样报名,考试时怎样。最后决定去广州天河那里考试,因为我爸爸在那里工作。而时间定在十二月份倒数第二个星期五。选在倒数第二个星期是因为为了给自己多点时间准备,而不选最后一个星期是要以防万一。结果最后一个星期真的发生了很大件事--地震,这次地震使得沟通中国大陆和美洲的光纤断了,考试中心也因为这样无法正常考试。

因为这次考试优惠活动sun要求提前一个星期去报名。于是我在女朋友的陪伴下一起去广州报名。报名时,我就选了055的中文考试。报完名回来之后开始后悔了,听到有些人说中文是用机器翻译的有些地方根本看不懂在说什么,还有后悔报了055因为发现知道考scjp的人几乎都是报035,而有几个报055的好像都没有通过。在考试前就这么一直在想来想去,弄到自己很紧张。

最后冲刺
在最后一个星期里,我一直都很紧张。我把那本scjp考试指南每一章最后的总结都看了一遍,把以前做错的题又在看了一下研究一下自己为什么错,哪个方面的知识点不清楚然后再巩固一下。然后做一下模拟器,感受一下考试时的感觉。做了一次模拟器之后很失望,因为第一次做了之后成绩只有百分之四十多而已,离考试通过的分数还有十个百分点。这件事使我自己更加紧张。但最后两天,女朋友特地跑过来和我聊天开导我,使我自己放松了很多。在倒数第二天因为该看的也看完了,所以没事看了一下035的TestKing。

决战考试
我是提前一天去广州的,准备第二天早上就去考试。去到广州之后本来想着在我爸宿舍那里再看一下书,但是下午睡了一觉然后吃了饭后就自己去了购书中心那里逛了几个钟。结果脑子里都装了很多spring,stucts的东西,整个晚上都在思考这些技术。晚上回爸爸宿舍那里,爸爸和一些同事就打边炉和喝酒,弄到很晚快一点钟才去睡觉,好像躺了一个钟左右才睡着。

第二天早上起来之后就发现头痛,开始有点慌了,怕头痛等一下考试发挥不好。我就吃了很多薄荷糖,这是一直的习惯,一紧张就要吃薄荷糖。在八点半时就打了辆的去考场那里。到了那里之后,那个招待的人还说:“哇,正好九点,那么准时。”她说完后就去考试那间房间里开电脑下载试卷。考试前还要签一张考试协议书,保证不能作弊,然后发一张做了标记的草稿纸。有一个人是和我同时考的,他比我晚来了十分钟左右。和他聊了一下,原来他是从事JAVA开发的。他听说我只是个大二的学生,就带有一点嘲讽的口气对我“SCJP是需要实际开发经验的。”一听他这么说,我就怀疑这个人没什么技术的,之后他就去和招待小姐聊天。而且他还问有没有api文档可以看,这时我可以肯定他只是一个白痴。考试是在一间有几部电脑的房间里进行的,房间里有监视器,考试时只有考生没有监考人员。

开始考试了,一开始要回答一些关于你对JAVA技术的了解情况,比如你对某个方面的掌握情况如何。有人说这会影响你考试试题的难度,我觉得这不大可能,因为试题一早就下载到考试系统中了。再仔细研究一下,发现windows的一些功能键都被拦截了,比如任务管理器和win键。回答完那些调查问题就开始答题了,73道题目之外还有几个调查问题,比如你是在哪里知道sun的scjp考试之类的问题。

我的答题策略是按照SCJP学习指南里讲的策略。第一遍先把简单得可以一下子得出答案的题作完,第二遍把第一遍没有做的题写完,第三遍把做了标记的题目再作一次,第四遍检查。考试中发现中文汉化的还可以,有几道题翻译的有点怪,还有一道拖放题,题目竟然因为空间不够写了一半,那道题我记得是考线程(Thread)的。还有拖放题有些问题,就是只要打开了之后不管你有没有回答完系统都认为你已经回答了,而且在回答完之后再次打开,之前填的答案会丢失,所以每道我都做了记号并把答案记下来。完成之后考试时间还剩一个钟多一点,我狠心地按下了完成按钮结束考试。从决定按下到走出考试的房间知道结果之前,心一直猛跳,很紧张很紧张。走去考试的房间后,就向那个负责安排考试的那个人说我考完了,她叫我稍等一下,她去拿打印报告。考试答案是发送到一个考试总的中心,然后分析答案,再传真考试报告到你考试的那个考试中心的,这个过程总的时间只有几秒。过了一分钟左右,我看到她拿来了成绩报告,她先在上面盖一些章。我很紧张地问她过了没有,她轻描淡写说过了。等到我拿到考试报告时,有点失望,因为只考了67%,只比通过百分率高了9个百分点,我怀疑是我在最后检查时把很多题目改错了。走出考试中心后我马上打电话给我女朋友和妈妈,告诉他们结果。那时真的很兴奋。而走出考试那个房间时,另外一个考试那个人才回答到五十几题,他在考试时在很多题目都是一直拿鼠标在答案选项那里一直猛点。我有点幸灾乐祸,估计他是通不过。

收获体会
通过这次考试我比较好得掌握了JAVA语言的一些基础(只是一些而已),其实在一边学习复习时,写了很多toy code(比如一些文件操作工具等),充分地理解了一些用法和机制。打下了比较好的JAVA基础。

不过通过考试之后会更累。因为还有很多很多JAVA知识要学习,就像读的书越多,学的东西越多,越会发现自己的无知,然后又去读更加多的书学习更多的知识。之后马上就指定新的学习计划和学习任务,如,JDBC,XML编程,JDNI,JSP和Servlet,EJB,各种框架,等等。

考到这个证之后好像没什么成功感,因为发现很多人都考了这个证,所以可能之后会考SCEA(SUN认证架构师)。有些人为了SCJP,报了035,然后把时间都用在背题上,之后通过考试之后就到处炫耀。因为035的题库网上有,而且才只有二百多道题左右,所以很多人都可以通过这个方法轻松的通过这些考试,以致于把SCJP这个认证的可信度真实度都拉低了。055现在还没有题库,而且考试范围比035多了4个考试内容,所以比较少人考。

感谢
能够通过这次的考试,除了我自己的努力,也离不开女朋友和爸爸妈妈的支持,谢谢他们。特别是女朋友在我紧张迷茫时开导了我,鼓励了我,让我能够用比较好的心态面对考试。婷婷我爱你。
posted @ 2007-02-20 23:47 _Kai_ 阅读(1446) | 评论 (1)编辑 收藏
     摘要: 摘要
Cactus是Jakarta的子项目之一,是对JUnit的一个扩展。Catus是Java EE容器内测试的事实标准。
Cactus是针对集成单元测试的开源框架。可以在容器内对JAVA EE服务器端组件(如JSP,Servlet,EJB,数据库等)进行细粒度的单元测试。
Cactus工作原理。。。
  阅读全文
posted @ 2007-02-19 23:19 _Kai_ 阅读(529) | 评论 (0)编辑 收藏

 

 

按农历算,今天是今年的第一天,今天我的Blog也开通啦。

Blog是记录自己成长过程的地方,是发表自己对各种技术的看法的地方,是推广自己想法的地方。

记得有人说过有技术还不行,还要能把自己对技术的想法和感悟写出来。侯捷有句很经典的话:“我手写我心!”

新年的愿望:
我要更加努力,变得更强!

posted @ 2007-02-18 00:53 _Kai_ 阅读(164) | 评论 (0)编辑 收藏
仅列出标题
共2页: 上一页 1 2 

公告

码农一枚

欢迎大家发E-mail到 与我讨论关于软件开发的各种看法。

最新Blog地址:http://thekayway.com/

导航

<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

统计

常用链接

留言簿(2)

随笔分类(21)

随笔档案(18)

常去的地方

技术站点

朋友的Blog

搜索

最新评论

阅读排行榜