我堅信使用單元測試是構建大型多平臺應用程序的一部分。我們目前正在計劃在單獨的項目中進行單元測試。這有利於保持我們的代碼基礎清潔。不過,我認爲這會將測試代碼與實施單元分開。你對這種方法有什麼看法?有沒有像C++應用程序的JUnit這樣的工具?如何在大型C++項目中實現單元測試?
回答
這是一個合理的方法。
我已經都與UnitTest++和Boost.Test
我已經看了CppUnit的很好的效果,但對我來說,感覺更像是JUnit的東西不是一些針對C++的轉換。
更新:這幾天我更喜歡使用Catch。我發現它是有效和簡單的使用。
[doctest](https://github.com/onqtam/doctest)是我重新實現注重編譯速度 - 檢出[FAQ](https://github.com/onqtam/doctest/blob/master/doc/markdown/faq.md#how-is-doctest-different-from-catch )看他們在哪些方面不同 – onqtam 2016-10-10 19:43:54
CppUnit的是Junit的用於C++應用 http://cppunit.sourceforge.net/cppunit-wiki
個人的直接等同物,我創建在一個不同的項目的單元測試,並創建了內置所有的單元測試和依賴源代碼單獨生成配置。在某些情況下,我想測試一個類的私有成員函數,所以我使Test類成爲要測試的對象的一個朋友類,但是當通過預處理器聲明構建「非測試」配置時隱藏了朋友聲明。
但是我最終做了這些編碼體操,因爲我在將測試集成到遺留代碼中。如果您開始進行單元測試,更好的設計可能很簡單。
您可以爲該庫的子目錄中源樹中的每個庫創建單元測試項目。您最終會爲每個庫提供一個測試驅動程序應用程序,這使得運行一套測試變得更加容易。通過將它們放在一個子目錄中,它可以保持代碼基本清潔,但也會使測試接近代碼。
可以輕鬆編寫腳本來運行源代碼樹中的所有測試套件並收集結果。
我已經使用原始CppUnit的定製版本多年,並取得了巨大成功,但現在還有其他替代方案。 GoogleTest看起來很有趣。
我認爲你的單元測試的正確路徑和它的一個偉大的計劃,以提高您的產品的可靠性。
雖然在將應用程序轉換到不同的平臺或甚至不同的操作系統時,單元測試並不能解決所有的問題。原因在於,流程單元測試會在您的應用程序中發現錯誤。它只是簡單地將盡可能多的輸入引入系統,並等待另一端的結果。就像讓一隻猴子不停地敲擊鍵盤並觀察結果一樣(Beta測試者)。
要進入下一步,通過良好的單元測試,您需要專注於您的應用程序的內部設計。我發現的最佳方法是使用稱爲「合同編程」或「按合同設計」的設計模式或設計過程。另一本對於在你的核心設計中構建可靠性非常有幫助的書是。
調試開發過程:保持專注,打船日期和建立實體團隊的實用策略。
在我們的開發團隊中,我們仔細研究了我們認爲是程序員錯誤,開發人員錯誤,設計錯誤以及如何使用單元測試以及通過DBC構建軟件包的可靠性以及遵循建議調試開發過程。
我使用單元測試++。測試在一個單獨的項目中,但實際的測試與實際的代碼交織在一起。它們存在於被測部分下的文件夾中。 即:
MyProject的\ SRC \ < - 實際應用
MyProject的源的\ src \測試< - 測試的源
如果您有嵌套的文件夾(誰不),那麼他們也會有自己的擁有\測試子目錄。
我們也這樣做,我們的構建系統會自動構建測試EXE的代碼可以在任何unittest源文件夾下找到。 – 2008-09-29 12:24:15
使用tut http://tut-framework.sourceforge.net/ 很簡單,只是頭文件只有沒有宏。可以生成XML結果
您應該將您的基本代碼分隔到共享(動態)庫,然後爲此庫編寫單元測試的主要部分。
兩年前(2008)我參與了Linux基金會部署的大型LSB Infrastructure項目。該項目的目標之一是爲Linux核心庫編寫40.000函數的單元測試。在該項目的上下文中,我們創建了AZOV technology和基本工具API Sanity Autotest,以便自動生成所有測試。您可以嘗試使用此工具爲您的基本庫生成單元測試。
- 1. 如何在大型複雜類中實現單元測試?
- 2. 如何在大型項目中進行單元測試
- 3. 大型Grails項目中的集成和單元測試
- 4. 單元測試的C#項目
- 5. 將單元測試添加到大型python項目
- 6. .Net Core項目的VSTS單元測試:未發現測試
- 7. 單元測試C#實現爲基礎的測試工具
- 8. Visual Studio C++:谷歌測試的單元測試exe項目?
- 9. 單元測試:兩個項目中存在「狀態」類型
- 10. C#單元測試,如何測試大於
- 11. 如何測試wcf rest服務vs「單元測試項目」?
- 12. C++ - 是否有可能在單元測試中實現內存泄漏測試?
- 13. Visual Studio 2017單元測試項目vs xUnit測試項目
- 14. 如何在C#測試項目中實現全局異常處理程序
- 15. 單元測試項目放在哪裏
- 16. 在VS.NET 2010中構建C++單元測試項目時出現鏈接錯誤
- 17. 如何在單元測試項目中使用WPF窗口
- 18. 如何僅在Hybris項目中運行單元測試?
- 19. 如何在Xcode中組織單元測試庫項目?
- 20. 如何在vs2010中爲c#中的單元測試添加項目?
- 21. MVC .NET如何在現有源代碼中添加單元測試項目?
- 22. 如何測試是否在單元測試中出現異常
- 23. 如何在Eclipse中爲受管理的ARM C項目添加單元測試?
- 24. 如何在Eclipse中設置經過單元測試的C項目
- 25. C#如何在單元測試
- 26. 如何在實現ngx-bootstrap/datepicker之後通過單元測試?
- 27. 如何在IEqualityComparer上實現單元測試?
- 28. 如何在網頁上實現單元測試?
- 29. 使用EF Entry實現單元測試?
- 30. 用JSON實現grails單元測試RestfulController
有一個剛剛被問到的非常類似的問題。看看[CppUnit](http://cppunit.sourceforge.net),[CppUnitLite](http://www.objectmentor.com/resources/downloads.html)和「[使用遺留代碼有效工作](http:/ /www.amazon.co.uk/Working-Effectively-Legacy-Robert-Martin/dp/0131177052)「(全部由Michael Feathers – 2008-09-18 11:20:54