問(wèn)題
StackOverflow上有一則是否使用TDD(測(cè)試驅(qū)動(dòng)開(kāi)發(fā))進(jìn)行UI開(kāi)發(fā) 的提問(wèn)恩袱。
JacobE問(wèn):
對(duì)于是否使用TDD進(jìn)行開(kāi)發(fā)UI這件事瓤荔,我想了很久愚隧,但難以決定。我想聽(tīng)聽(tīng)你們的意見(jiàn)洪乍。
回答
kdgregory的回答(23票贊同)
試圖測(cè)試UI組件的放置是沒(méi)有意義的,首先因?yàn)閁I布局是主觀的夜焦,所以應(yīng)該由人來(lái)測(cè)試壳澳。其次,隨著UI改動(dòng)茫经,你要不斷地重寫(xiě)測(cè)試巷波。
同樣,沒(méi)必要測(cè)試你所使用GUI庫(kù)的組件科平,它們已經(jīng)被非常多的人測(cè)試過(guò)了褥紫。如果你寫(xiě)了新的UI組件,倒是可以測(cè)一測(cè)瞪慧。
你應(yīng)該測(cè)試的是GUI下面的程序行為:控制器和模型部分髓考。朝這個(gè)方向努力,你就會(huì)開(kāi)始關(guān)心組件分離弃酌。為了方便測(cè)試氨菇,你會(huì)讓你的模型部分和控制器和你的UI盡量解耦。
bangroot的回答(8票贊同)
當(dāng)我使用自動(dòng)化測(cè)試去測(cè)試UI的外觀風(fēng)格時(shí)妓湘,我發(fā)現(xiàn)這是最大的“過(guò)度工程”查蓉。我的建議是:不要!把你的測(cè)試重心轉(zhuǎn)移到程序的行為上吧榜贴,至于程序的UI豌研,留給測(cè)試團(tuán)隊(duì)去做吧妹田。關(guān)鍵是把你的精力用在高收益的行為上,自動(dòng)化的UI測(cè)試不僅不會(huì)增加價(jià)值鹃共,還會(huì)讓你負(fù)債鬼佣!
Brian Rasmussen的回答(5票贊同)
TDD的作用就是讓你的邏輯代碼和你的GUI代碼分離。如果你這樣做了霜浴,你會(huì)發(fā)現(xiàn)很容易用TDD建立邏輯代碼晶衷。如果你的邏輯代碼分離得好,在它之上你完全可以建立另一套UI阴孟。
Harald Scheirich(4票贊同)
我從來(lái)不用TDD做任何UI布局的事情晌纫,因?yàn)榛ǖ臅r(shí)間太不值。
后面的解答不一一列舉永丝。
結(jié)論
關(guān)于這個(gè)問(wèn)題的回答基本是一邊倒的結(jié)論:沒(méi)必要把精力放在UI的自動(dòng)化測(cè)試上锹漱。原因可歸結(jié)為以下兩點(diǎn):
- 不合理∧饺拢“因?yàn)閁I布局是主觀的凌蔬,所以應(yīng)該由人來(lái)測(cè)試〈忱洌”
- 不劃算砂心。對(duì)于UI的自動(dòng)化測(cè)試,要花費(fèi)很大的努力和很多的時(shí)間蛇耀,隨著UI改動(dòng)辩诞,測(cè)試也要改動(dòng)。工作量太大纺涤。明顯不如由人來(lái)測(cè)試UI劃算译暂。
根據(jù)以上的討論,我的結(jié)論是:
- TDD是輔助設(shè)計(jì)的一種方法撩炊,但不是唯一的方法外永。當(dāng)我做UI布局時(shí),寫(xiě)CSS時(shí)拧咳,沒(méi)必要TDD伯顶。
- TDD應(yīng)該針對(duì)程序的行為,而不是程序的外觀骆膝。TDD的目標(biāo)寫(xiě)出依賴(lài)盡量少的祭衩,方便測(cè)試的功能模塊。
2015-02-12 周四
如果你喜歡我的文章阅签,可以點(diǎn) 這里 給我打賞掐暮,五分一毛也是對(duì)我的認(rèn)同。