測試驅動開發的第乙個例子 我的畢業設計

2021-09-08 17:05:08 字數 2364 閱讀 4290

大學終於要邁入尾聲了,工作也找到了相對較好的,現在就差畢業設計了。我一直堅信著這樣的原則:當面臨很多選擇時,選擇最難的那乙個,所以我選擇了室內導盲系統設計。其實這也不是最難的,只是我以前沒有做過類似的工作,其他多多少少都有涉及,所以特地選擇了這個。

說難其實也不難,因為硬體已經做好了,我要做的就是設計軟體。軟體設計的方法有很多種,還是秉持著那條原則:選擇最難的那個,所以我選擇了測試驅動開發的方式。

在寫這篇文章的時候,我的室友打機打得正酣,而我則在一邊忙著敲**,這時突然意識到,為啥他們能夠接受那樣低水平的工作而沒有任何抱怨,甚至在當初連做選擇都沒有就接受了,然後就一直拼命的打機消磨時光,除了乙個一出生就是官二代,富二代之外,其他還是必須要找工作,並且一找到工作就馬上接受,哪怕這份工作的待遇非常低。原因非常簡單:見識的侷限性。我已經出來實習工作了,見識到公司裡有些人也是這樣的四個字:混吃等死。當我意識到這點的時候,是渾身打顫:為啥有些人以後的發展是那樣子,有些人以後是這樣子,除開一些無法改變的原因之外,最根本的就是他們骨子裡就接受了這樣的事實:我就是只能找到這樣的工作,這樣的工作已經很好了。這就是所謂的認命。

明白到這點之後,我更加慶幸自己當初在找到第乙份工作的時候還是有繼續找,直到找到一家在該行業也算是巨頭的公司並且通過他們的面試。就算自己現在的技術水平很菜,就算自己現在寫的**還是很爛,但我們還是要一直堅持在最前線,一直向上,也許,在前方,就有不一樣的風景在等著我們。

所謂的測試驅動開發思想非常簡單,就是在編寫具體的**前,先編寫測試**,然後想辦法讓自己的**通過測試。思想非常簡單,但實現起來卻不容易,除開工具,就是自己所寫的測試單元可以說是基於自己的想象,因為沒有任何具體的實現,只有測試用例。有具體的輸入輸出的測試用例還是比較好寫,但如果是更加抽象的測試用例,該測試什麼都是個問題。但這並不阻止我去編寫測試單元,因為我深深明白到一件事:人之所以選擇混吃等死,是因為他們根本就不知道在這上面的風景到底是怎樣。所以,故意去使用一些高階的技術並不是壞事,它會讓我們明白到原來還有這樣的東西,就算嘗試是失敗的,但至少我們也明白到這東西大概是什麼樣子的,並且在這個嘗試中學到很多東西。

第乙個測試模組就是測試手機傳送連線指令還有接收響應指令。

指令的格式已經是固定的,所以這不是難事,第乙個測試可以這樣測試:

public

void

test;

byte command =mcommand.getcommand();

for(int i = 0, length = bytearr.length; i < length; ++i)

}

為了讓這個測試通過,我們必須建立乙個類command:

public

class

command;

public

byte

getcommand()

}

第乙個測試通過!在通過這個測試的時候,我們建立了乙個用於儲存指令的類command,它的第乙個職責就是返回相關的指令。

我們接著編寫測試單元。

傳送指令是向整個區域網所有可能的閘道器傳送,每傳送完一條,指令的序號就會加1,等到99後又從0開始。根據這樣的特性,我們可以這樣寫測試:

public

void

test();

commandlist.add(command);

}commandlist.add(

newbyte);

for(int i = 0; i < 101; ++i)

}

這裡涉及到新的物件:閘道器gate,所以需要建立乙個新的類:gataway。gateway在接收到command傳送的指令後,會返回一條響應指令,該指令的序號和接收到的指令是一樣的。   

public

class

gateway ;

public

byte response(byte

command)

這裡command多了乙個新的職責:send():

public

byte

send(gateway gate)

return

response;

}

就是這樣,我們簡單的通過兩個測試就建立了兩個基本的型別:command和gateway,並且確定了它們的基本行為,當然,在隨後更多的測試中,這兩個類會新增更多測試,甚至是被證明是無用的而被刪除掉,都有可能。

測試驅動開發就是利用預先編寫好的測試**驗證自己編寫de**是否正確,如果不符合測試,說明**存在問題,必須修改直到測試通過。當然,這種方式要求我們一開始編寫的測試**必須是正確的,這比編寫**需要更多的經驗和技術要求,幸好,測試**也是可以修改的,只要驗證測試**不符合目前所有測試的用例情況,這個在嘗試各種努力仍無法讓測試通過時,可以考慮下測試的正確性。     

OpenCV的第乙個例子

當安裝好python 3.7.4 64位的版本之後,接著要安裝opencv的庫,就可以來測試opencv的第乙個例子了,例子的 如下 python 3.7.4,opencv4.1 蔡軍生 import cv2 的路徑 讀取image cv2.imread imgname,cv2.imread any...

udp的第乙個例子

import j a.io.ioexception import j a.net.datagrampacket import j a.net.datagramsocket import j a.net.inetaddress import j a.net.socketexception 不同的協議就...

OSGi第乙個例子

書本上介紹使用的是galileo sr1進行開發和測試,我的環境如下 1 作業系統是ubuntu13.10 2 eclipse版本為kapler sr1 由於eclipse版本不同,所以equinox osgi book的sample manager時無法安裝,也就沒有去定位問題,直接開始試例子 在...