在做C++程式的單元測試時,大家經常會遇到兩個問題:
1.不友善驗證測試結果,原因是因為不可通路保護和私有類成員
2.對于需要通路的connect、receive、send等不好繞過
這裡介紹兩種方法,即可解決:
1.在編譯單元測試代碼時,加上UNIT_TEST宏(名字可以為其它你喜歡的),并将private定義成public,即:
#define private public
這樣就可以測試代碼就可以随意通路類的任何成員了,單元測試就是要做白盒測試,将内部看得清清楚楚
以前喜歡使用友元類的方式,但那需要在代碼中安插測試代碼,是以這個辦法更好。
2.對于IO問題,隻需要從被測試再繼承一下,然後重實作(如果為虛拟,則為隐藏)相應的方法,改成友善驗證的,這樣問題也就好解決了。設計模式中的Decorator模式用在這裡非常合适。