iOS和Android開發有必要使用單元測試嗎?

最近在公司內部討論起這個問題,前端的開發認為因為移動端因其涉及到UI的操作,單元測試書寫複雜,並且不好跟蹤,基本邏輯無法寫清楚,認為單元測試書寫不是很有必要。但個人從自己的開發角度思考,卻認為單元測試很有必要,可以在研發後期保證自己開發的質量。想認真的問下做前端的開發,資深的同學,單元測試在移動端的開發中,有必要嗎?


當然有必要了,現在創建新的項目AndroidStudio都幫你自動生成測試目錄了。我以前寫Android時嫌麻煩和運行測試還需要編譯到真機或模擬器太慢,就直接不寫。掉到坑裡多了自然也就開始寫了。首先UI測試方面寫起來的確麻煩,就算用上Espresso有時候也會出現一些莫名其妙的問題。UI表現、布局、操作邏輯之類的基本測不了。但是至少一些數據操作或者純粹的邏輯代碼這部分要寫單元測試吧。例如要同步伺服器端數據到本機資料庫、一些工廠類傳入數據後生成的類檢查是否正常、關注按鈕的切換邏輯之類的都要寫。有時候就算是重寫一個類equals和hashcode方法我也會寫個單元測試看正不正常。。。還有其他的跳轉activity傳intent,也都可以測試看數據對不對,頁面有沒有起來。輸入框輸入、點擊發送正不正常,有沒有清空。這些雜碎的都寫成測試,到時候直接運行測試代碼就可以,省去不少麻煩,也避免一些代碼改動引發的bug。


一般來說,當你開始著手給項目寫單元測試卻發現根本沒法寫測試用例的時候,這就證明,你的代碼爛透了。


先說結論: 寫單元測試非常有必要。

好代碼的一個檢驗標準,就是能跑單元測試。

你想啊,單元測試,要求你能mock掉資料庫線程操作文件操作網路操作UI等等。你可以試一下,一份能進行這種mock的代碼,耦合程度肯定很低。

比如fastjson,測試的代碼, 是源代碼的很多倍:fastjson/src/test/java at master · alibaba/fastjson · GitHub,不信的話, 樓主可以去du看一下大小。

不知道樓主有沒有想過,為啥fastjson, 要寫這麼多測試。

測試代碼分很多種,對於單元測試來說,最大的作用, 是確保重構的時候, 不影響業務邏輯。有單元測試的情況下,是可以放心大膽的重構的,只要能跑過測試就行。你想, fastjson被這麼多人使用,重構出個bug, 影響得多惡劣?

另一個原因,是遺留代碼的維護性。單元測試,其實是類似於黑盒測試。可以讓人,不看你的具體代碼,就知道你這個函數,是幹嘛的、要做些什麼。

樓主有提到

涉及UI操作,所以單元測試複雜。

這個是因為你們代碼,沒做分層,UI與業務邏輯沒有分開。比如拿數據的操作,直接寫到Activity或fragment裡面了,這種代碼是沒法測試的。如果你們不斷重構,讓UI和業務邏輯分離了,你們就容易寫測試了。而且代碼的臭味更少,更容易維護。

另外,個人認為,單元測試(jUnit)比UI的測試(AndroidTest)重要得多


一般開發偷懶的話都會這麼說。

寫單元測試會讓你更好地去思考應用的架構是否合理,解耦是否到位。

對於小應用來講,是否有單元測試可能意義不是很大,但是對於複雜的應用來說,很有必要,否則以後開發維護會非常痛苦。現在欠的債,以後來還。


看看GitHub上哪個優秀開源庫沒測試的!

不需要測試只是氛圍習慣和偷懶的借口!

為什麼需要寫測試?為自已的代碼負責!

想像一下後端,前端各端都為自己的代碼負責會是多麼高效!

寫測試可以「逼」你將UI和邏輯分開,把不相干的代碼解耦!

寫測試可以讓你隨時重構!可以不用加班改bug!可以讓人覺得你牛逼靠譜!可以讓你站在調用者的角度發現問題!可以自信!可以交到女朋友!可以早點回家帶孩子!可以……不說了,可以吃飯了!


當然有。


拋開其它不談,資料庫操作,介面,數據解析這一部分完全可以單元測試,涉及界面的還是直接真機快


你們肯定沒有試過一周一個功能,然後上線的了


單元測試很有必要,但並不一定要用AndroidTestCase 等專門的測試工具,個人更喜歡在開發的時候,直接在功能里考慮好各種情況,真機測試。作為一個程序員,乾的不僅僅是開發。


小項目、時間短的無所謂,項目時間越長,就越有必要加單測,不然誰敢動舊代碼?


xcode默認都幫你創建單元測試的文件夾的。


我在各個地方都有測試代碼......最後我都搞不懂哪些是測試用的,哪些不是了......


任何開發都有必要單元測試!


當年我高考試卷要是這種題目,我已經是清華學子了,真的兄弟


這是一道送分題啊

當然有必要。但是真正寫的人不多。寫的多少,與上線時的心情忐忑程度成反比。


辣么多回答必須要的,只問你們:如果開發周期只夠做完代碼,你們會寫測試代碼!?都是被送寬鬆周期慣壞的人。

我的觀點是,時間足夠時候,要寫。時間不夠,真機測試。要是真機都不測。那還是不要寫代碼了


推薦閱讀:

你見過的 iPhone 和 Android 上有趣的操作有哪些?
如果你來創意一個手機 APP,它是什麼樣的?
如何看神州專車躋身蘋果 App Store 免費榜 top100?
開發移動應用時,如何制定API?
唱吧已經成為一個「現象級產品」,但是它能持續嗎?能成為顛覆者嗎?

TAG:iOS | 移動應用 | iOS開發 | Android開發 | Android |