yipo🌿
方格子🎲⚀⚁⚂⚃⚄⚅▤▥▦▧▩
test 有時候不是會超多 test case 嗎?
寫在同個檔案跟原本的 source code 混在一起會變得很亂不是?
yipo🌿
如果是把測試當做使用說明或是規格文件的話,還要到別的地方找,好像有點麻煩…
yipo🌿
目前看到不放在一起的理由,是當作函式庫使用的話,測試程式碼會變成編譯、執行或是套件相依的負擔。
yipo🌿
方格子🎲⚀⚁⚂⚃⚄⚅▤▥▦▧▩ : 亂不亂的問題是要以好好整理來解決的吧?
yipo🌿
Rust 就是把測試和實作寫在一起的語言,似乎是把測試內建於語言的關係,沒有額外的測試框架需要依賴。
OldNick‍🍆巴爾選民
提到rust 我特地去看了一下
Test Organization - The Rust Programming Language
它好像是可以寫在一起但並沒有推薦寫在同一個檔案吧
OldNick‍🍆巴爾選民
我個人投分不同檔案一票
首先我不會把測試當成說明或文件 那是函式前面的註解做的事情

另外測試太多很亂要我整理解決....嗯
除了放在別的檔案其他整理方法我還真想不出來

個人喜好是單一檔案的行數越少越好Orz
要用分頁對照看也比較好拉
yipo🌿
因為也聊到有這種 executable document 的需求,所以才想為什麼不把測試和實作寫在一起。
doctest — Test interactive Python examples
yipo🌿
OldNick‍🍆巴爾選民 : 就是因為K過 Rust Book 啊 (還剩一些沒看完),我對這個章節的理解是:Unit Tests → 放同個檔案;Integration Tests → 才放 tests 目錄。
OldNick‍🍆巴爾選民
窩糙....python還有 doctest 這東西喔學習了
我只用過 unittest 而已
那這情況我大概兩者都用吧....理由跟這篇差不多
Python - doctest vs. unittest
yipo🌿
Test Organization - The Rust Programming Language
You’ll put unit tests in the src directory in each file with the code that they’re testing. The convention is to create a module named tests in each file to contain the test functions and to annotate the module with cfg(test).
yipo🌿
其實也沒有非要戰一個絕對怎麼做比較好啦。視情況選擇最適合的方式就對了,只是想說可以討論看看有什麼優缺點這樣。😉
OldNick‍🍆巴爾選民
Rust 定義的 Integration Tests 是針對 library ?
怎麼跟我認知的不一樣XD
我是把沒有任何外部依賴的測試都當作單元測試
感覺有點對不上
沒學過Rust看來不能直接拿其他語言套Orz
官方文件是天 既然有明文寫那我一定跟著走 沒餘地戰
OldNick‍🍆巴爾選民
我太久沒動腦
那rust的單元測試要不要測public方法
還是會傾向丟到整合測試
yipo🌿
單元測試應該是一個 function 或是一個 class 這樣對吧😆
yipo🌿
順便推銷一下我 Rust Book 的筆記😎
🌐 The Rust Programming Language - HackMD
OldNick‍🍆巴爾選民
(worship)
OldNick‍🍆巴爾選民

假設我寫了一個像STL的library 裡面只提供了一堆稀有資料結構讓人用
那針對 DisjointSet 的增查 測試是單元測試應該沒啥毛病

外部人士用這個library 也只能是 new 特定的結構來用
那這個 library 不就沒寫 Integration Tests 的必要了
方格子🎲⚀⚁⚂⚃⚄⚅▤▥▦▧▩
yipo🌿 我知道把 function 或 class 排好會整齊
但是如果一個 function 有 5 個或 10 個 test case,整個檔案就會有大部分都不是真正執行的程式碼,不會對讀 code 造成阻礙嗎?
python 的 unittest 會找檔名是 test 開頭或 test 結尾的
所以檔名 https://abc.py 的 test case 就可以寫在 https://abc_test.py,然後就會被擺在一起,也方便找
不過這樣會導致資料夾檔案混亂 (真正執行的程式碼跟 test 又混在一起了)
所以我們會使用 tests/ 資料夾裡面才放 https://abc_test.py 等所有跟外面路徑結構相的test 檔案
yipo🌿
方格子🎲⚀⚁⚂⚃⚄⚅▤▥▦▧▩ :
- test case 可以統一放在檔案的下半部,應該還不算太影響閱讀。
- 擺在實作旁邊我覺得也可以接受,還算好找。
- 放在 tests 目錄,如果 IDE 有方便的方式可以打開對應的檔案也還算 OK。
但前提就是有賴良好習慣,確實把檔案整理成一對一,或相同目錄結構,才方便去查找對應的測試。
yipo🌿
像是目前工作的版本庫,實作與測試就沒有一對一且以相同目錄安排,多個類別的測試混在一起,導致平時除非測試出錯了,否則難以順便審視對應的測試寫得好不好…
yipo🌿
會覺得測試很髒亂,就把它藏到別的地方,眼不見為淨的想法不太好… 畢竟測試也應該追求可讀性,要受到和產品程式一樣的重視。(最近讀到的 Clean Code 如此陳述)
yipo🌿
https://images.plurk.com/74JoZVVIwvcPhaktPMSY7T.jpg
yipo🌿
(不是說分開放就是不重視喔,重點是要整理,而可以好找。)
載入新的回覆