軟件絕對領域

          大名頂頂的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_ 閱讀(1762) | 評論 (0)編輯 收藏
          有機會可以接到一個小型商務平臺的項目,最近就開始做一個平臺的一些基礎組件,比如新聞發布模塊和用戶管理模塊。開發團隊只有我和另一個同學,一共兩個人。而我們對XP開發過程比較有興趣,剛剛好可以進行結對編程和TDD。

          開發已經進行了一個星期左右,已完成新聞發表模塊中的新聞管理模塊。因為完全沒有經驗,而且開發時間不夠(只能在沒有課的上午或者下午開發),開發進度很慢。但是自我感覺不錯,因為體驗了以前沒有體驗過的開發過程,從中學到了很多東西。

          在整個開發過程中,我們始終堅持“測試先行”原則。首先列出要完成的任務清單,用JUnit寫出相應測試代碼,然后運行測試,出錯,偽實現,重構。一般都是兩個人,一個人持有鍵盤,寫一個鐘左右的代碼,然后一邊討論一邊寫代碼。在完成了一段代碼之后有種神奇的感覺,好像不知不覺中代碼就被寫出來了,這可能是TDD神奇的地方。先寫出符合需求的測試,接著按照測試來寫代碼,就是這么簡單。

          不過完成了新聞發布模塊之后,經過討論,決定下一步完成前臺的UI。對于UI的開發,平時例子學習了不少,自己寫的toycode也寫了一些,但是在實際應用開發中對我們還是比較陌生。一開始準備用簡單的JSP和Servlet來做前端,但是在前端控制器中代碼實現有點混亂,現在就卡在UI這里了,最后經過討論決定用WebWork作前端控制器。

          以前在看K.Back的《解析極限編程》時,看到他把結對編程描述的很神奇:
          結對程序員:
          • 使彼此都專注于任務
          • 一起頭腦風暴,討論系統的精化
          • 理清思路
          • 在搭檔陷入困境時要主動,這樣才能減少挫折
          • 使彼此都對團隊的實踐負責
          經過實踐之后,就很清楚地體會到k.Back講到的結對的好處。

          五一應該還會繼續完成這個項目,而且是一邊做一邊學。


          posted @ 2007-04-28 20:40 _Kai_ 閱讀(491) | 評論 (0)編輯 收藏
               摘要: 假期學完了Servlet和JSP,現在來復習一下。

          Servlet和JSP,作為JavaEE的重要技術之一,表現層的核心技術之一。其中包括了什么,如何使用。

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

          (待續未完)  閱讀全文
          posted @ 2007-03-27 23:18 _Kai_ 閱讀(155) | 評論 (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_ 閱讀(1071) | 評論 (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_ 閱讀(644) | 評論 (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_ 閱讀(1455) | 評論 (1)編輯 收藏
               摘要: 摘要
          Cactus是Jakarta的子項目之一,是對JUnit的一個擴展。Catus是Java EE容器內測試的事實標準。
          Cactus是針對集成單元測試的開源框架。可以在容器內對JAVA EE服務器端組件(如JSP,Servlet,EJB,數據庫等)進行細粒度的單元測試。
          Cactus工作原理。。。
            閱讀全文
          posted @ 2007-02-19 23:19 _Kai_ 閱讀(538) | 評論 (0)編輯 收藏

          ?

          ?

          按農歷算,今天是今年的第一天,今天我的Blog也開通啦。

          Blog是記錄自己成長過程的地方,是發表自己對各種技術的看法的地方,是推廣自己想法的地方。

          記得有人說過有技術還不行,還要能把自己對技術的想法和感悟寫出來。侯捷有句很經典的話:“我手寫我心!”

          新年的愿望:
          我要更加努力,變得更強!

          posted @ 2007-02-18 00:53 _Kai_ 閱讀(169) | 評論 (0)編輯 收藏
          僅列出標題
          共2頁: 上一頁 1 2 

          公告

          碼農一枚

          歡迎大家發E-mail到 與我討論關于軟件開發的各種看法。

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

          導航

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          統計

          常用鏈接

          留言簿(2)

          隨筆分類(21)

          隨筆檔案(18)

          常去的地方

          技術站點

          朋友的Blog

          搜索

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 乾安县| 扎赉特旗| 西藏| 璧山县| 昆明市| 宝清县| 延寿县| 九龙县| 雷山县| 高青县| 佛学| 库尔勒市| 博白县| 达日县| 伽师县| 广东省| 南漳县| 台东县| 成武县| 大新县| 杭锦旗| 柳州市| 健康| 平度市| 盐亭县| 香河县| 方正县| 潢川县| 即墨市| 应城市| 全州县| 长武县| 广安市| 米脂县| 克拉玛依市| 绥阳县| 浮梁县| 嫩江县| 吉木萨尔县| 伊宁县| 莱阳市|