我一直在呼喊「不要靠假設程式設計」,可是我卻常常這麼做。我用單元測試就是一種基於假設進行程式設計的反面教材,今天就下決心弄明白它。
主要想弄明白兩個問題:
執行的所有單元測試方法的執行緒模型,是單執行緒?是多執行緒?
執行的乙個型別的所有單元測試方法會建立乙個例項?還是乙個單元測試方法建立乙個例項?
執行的所有單元測試方法的執行順序,哪些是隨機?哪些是固定?
1 第1步,assemblyinitialize in thread:16,the unittest hashcode is:單執行緒執行。2 第2步,單元測試類c__classinitialize in thread:16,the unittest hashcode is:
3 第3步,單元測試類c__testinitialize in thread:16,the unittest hashcode is:55310967
4 第4步,單元測試類c__單元測試方法c1 in thread:16,the unittest hashcode is:55310967
5 第5步,單元測試類c__testcleanup in thread:16,the unittest hashcode is:55310967
6 第6步,單元測試類c__testinitialize in thread:16,the unittest hashcode is:16887489
7 第7步,單元測試類c__單元測試方法c2 in thread:16,the unittest hashcode is:16887489
8 第8步,單元測試類c__testcleanup in thread:16,the unittest hashcode is:16887489
9 第9步,單元測試類b__classinitialize in thread:16,the unittest hashcode is:
10 第10步,單元測試類b__testinitialize in thread:16,the unittest hashcode is:13872596
11 第11步,單元測試類b__單元測試方法b1 in thread:16,the unittest hashcode is:13872596
12 第12步,單元測試類b__testcleanup in thread:16,the unittest hashcode is:13872596
13 第13步,單元測試類b__testinitialize in thread:16,the unittest hashcode is:17876636
14 第14步,單元測試類b__單元測試方法b2 in thread:16,the unittest hashcode is:17876636
15 第15步,單元測試類b__testcleanup in thread:16,the unittest hashcode is:17876636
16 第16步,單元測試類a__classinitialize in thread:16,the unittest hashcode is:
17 第17步,單元測試類a__testinitialize in thread:16,the unittest hashcode is:45630738
18 第18步,單元測試類a__單元測試方法a1 in thread:16,the unittest hashcode is:45630738
19 第19步,單元測試類a__testcleanup in thread:16,the unittest hashcode is:45630738
20 第20步,單元測試類a__testinitialize in thread:16,the unittest hashcode is:34828481
21 第21步,單元測試類a__單元測試方法a2 in thread:16,the unittest hashcode is:34828481
22 第22步,單元測試類a__testcleanup in thread:16,the unittest hashcode is:34828481
23 第23步,單元測試類c__classcleanup in thread:16,the unittest hashcode is:
24 第24步,單元測試類b__classcleanup in thread:16,the unittest hashcode is:
25 第25步,單元測試類a__classcleanup in thread:16,the unittest hashcode is:
26 第26步,assemblycleanup in thread:16,the unittest hashcode is:
每個單元測試方法都會建立乙個例項。
[assemblyinitialize]最先執行。
[assemblycleanup]最後執行。
[testinitialize]在每個單元測試方法執行之前都會執行。
[testcleanup]在每個單元測試方法執行之後都會執行。
[classinitialize]在例項該單元測試類的第乙個例項時執行。
[classcleanup]在[assemblycleanup]之前執行,執行順序與[classinitialize]相反。
還有兩個問題沒有得出結論:一、單元測試型別的執行順序;二、單元測試方法的執行順序。好在單元測試最好不要依賴這個順序,因此我就不做實驗了。
Tornado 自帶Testing單元測試模組
asynctestcase 可以看做是對 ioloop 的乙個封裝,並以 testcase 的形式提供使用介面。class testfunc1 asynctestcase 這步如果不寫,會報錯傳入引數沒有ioloop,會導致無法進入runtest裡面 def get new ioloop self ...
單元測試之Django單元測試
每個應用,自帶tests.py 整合在django的專案檔案裡,更多是開發人員寫django自動的測試執行 3.1 前後置方法執行特點 django.test.testcase類主要由前 後置處理方法和test開頭的方法組成 特點 繼承於django.test.testcase 測試用例都是test...
單元測試(三) 建立多執行緒單元測試
junit本是不支援多執行緒的,乙個單元測試case主程序跑完,其他new出來的執行緒都會gg思密達。此篇mark乙份在junit中執行多執行緒的方法。net.sourceforge.groboutils groboutils core 5test slf4j public class device...