我正在接管通過ATL公開組件的項目。我在哪裏放置單元測試源並暴露內部組件?
我看到兩個主要區域爲單位測試,以覆蓋與此設置:
- 測試內部部件(可以或可以不被經由COM曝光)
- 測試的外部暴露的部件(又名測試暴露的接口)
當前該項目的所有內部組件都在解決方案內進行單元測試。它們由預編譯標誌啓用,該標誌將其編譯並在運行時執行。
從我一直在做的研究,看來該「規範」是將單元測試在不同的子項目,並有單元測試的主要解決方案供應鉤來訪問內部組件。通過這種設置,單元測試解決方案將設置對正在測試的解決方案的依賴性。這是真正的「規範」,還是有很多人在那裏被測試的解決方案裏面那個地方他們的單元測試框架(又名單元測試不子項目,而是寬鬆CPPS是#ifdef
「如果沒有提供預處理標誌,那麼退出)?
看來,目前正在使用的單元測試框架是cppunit,我正在考慮將它切換到gtest,並試圖將所有東西都移到不同的子項目中,但我想確保這些努力值得長跑。我想到的
一個辦法是__declspec
類進行測試,當預處理器定義指定他們才暴露。然後,單獨的單元測試子項目將使預處理器能夠告訴主要解決方案來揭示內部信息。我不確定這是否是最佳路線。
所以我的問題是:
- 是把單元測試在一個單獨的(子)項目,並揭露一個將要測試的源組件(或者通過掛鉤,露出類定義規範,等等)?
- 從COM DLL公開內部組件的最佳方式是什麼?
- 預處理器標誌是否會使內部組件的
__declspec
被測試爲壞主意?是否有其他人在單元測試中完成了這項測試,在正常操作期間被測試的項目通常不會暴露?
感謝您的意見!
UnitTest ++也是一個非常令人愉快的選項。 –