就自動測試而言,您如何爲C++程序進行自動測試?有沒有可以用來進行單元測試和集成測試的自動測試框架?有你,你如何做C++ autotest?
回答
你可以使用NUnit來實現這一點,但可能有更好的方法。使用NUnit,您正在編寫託管C++/CLI中的測試類,該C++/CLI調用您的C++代碼,該代碼可能以非託管方式運行。所以對於這個選項,爲了使用NUnit,一些C++代碼現在像託管一樣運行。有人可能會辯論這種方法的「純粹性」。與此相關的另一個問題是將調試器附加到NUnit(當然啓用了託管/本機),並試圖以合理的方式逐步執行託管的C++/CLI位。儘管如此,我們的辦公室一直在使用NUnit進行C++單元和集成測試。
剛纔看到@帕特里克關於CPPUnit的回答,我必須看看。
xUnit系列可用於單元測試。它存在於純C++代碼(CPPUNIT)和.Net代碼(NUnit)中。
還有CxxTest,Boost Test和CppUnit以外的其他很多框架 – Glen 2010-05-26 16:54:24
Boost有一個test library你可以看看周圍的其他人。
最後一次當我在Qt中做了一些工作時,我使用了Qt的QTestLib進行單元測試。它確實適合我的低保真需求。 http://doc.qt.nokia.com/4.6/qtestlib-manual.html
你在說自動測試ala Ruby Autotest?如果是這樣,也許Watchr會爲你工作。是的,您需要在您的開發機器上安裝Ruby運行時,但它看起來好像可以觸發文件系統更改時在命令行上執行的任何操作。例如,如果你想Watchr來構建和運行C++測試隨時隨地一.C /的.cpp/.H/.HPP在源樹文件改變,你可以做這樣的事情:
watch('src/(.*)\.[h|cpp|hpp|c]') {system "build/buildAndRunTests.bat"}
這個特殊命令顯然對你的構建過程是如何建立的(顯然你在Windows上)做了一些假設,但這應該是它的要點。我們的團隊使用構建後事件來配置我們的單元測試項目,該事件會自動運行構建的單元測試二進制文件,因此我們可以在buildAndRunTests.bat
腳本中觸發構建過程的這一部分,並將結果打印到命令行。這可能需要一些調整,但看起來像Watchr可能是一個不錯的選擇。當我給它一個鏡頭時(希望下週早些時候),我會更新這個響應。
UPDATE:我剛剛嘗試了這一點與我的C#項目之一,並得到它在那裏工作。所以我理論上也應該用C++項目來工作。
autotest.watchr:
watch('./.*/.*\.cs$') {system "cd build && buildAndRunTests.bat && cd ..\\"}
注意在正則表達式的結尾$。這很重要,因爲在構建時在源代碼樹中會生成大量工件,並且如果它們中的任何一個與字符串.cs匹配,它將觸發另一次運行,從而導致無限循環。可以想象,如果您在構建時生成/修改任何源文件,則會發生同樣的情況,因此您可能需要找到一種補償方法。
buildAndRunTests。蝙蝠:
pushd ..\
rem Build test project
"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.com" Tests.Unit\Tests.Unit.csproj /rebuild Release
popd
rem Navigate to the directory containing the built files
pushd ..\Tests.Unit\bin\Release
rem Run the tests through nunit-console
..\..\..\Dependencies\NUnit-2.5.5-bin\net-2.0\nunit-console.exe Tests.Unit.dll /run=Tests.Unit
popd
然後,在一個單獨的控制檯窗口只瀏覽到您的項目目錄,並運行以下命令(假設autotest.watchr是在項目樹的頂部,見下文):
watchr autotest.watchr
現在,當源代碼樹中的任何.cs文件發生更改時,它將自動運行buildAndRunTests.bat腳本。這只是我本地機器的一個例子,所以它可能不會逐字地處理您的問題,但您應該可以根據需要調整它。
這是供參考的目錄結構:
/Project
/build
buildAndRunTests.bat
/Tests.Unit
/Dependencies
/NUnit-2.5.5-bin
/net-2.0
nunit-console.exe
autotest.watchr
我希望這有助於。
- 1. 你如何做你的動態佈局?
- 2. 如果你沒有WHERE語句,你如何做Automatic Select子句?
- 3. 你如何用C++做系統工作?
- 4. 你如何做'和'條件?
- 5. 你如何知道你可以在api中做什麼?
- 6. 你如何爲你的python程序做一個安裝程序
- 7. 你如何找到你APP.CONFIG
- 8. 你如何使用C#
- 9. 你如何在單聲道做ALSA?
- 10. 你如何在Ruby中做多態?
- 11. 你如何做這個小圈子thingy?
- 12. 你如何爲自己做一件事?
- 13. 你會如何做這個CSS效果?
- 14. 你如何做svn的部分分期?
- 15. DataTables |如何做你自己的選擇?
- 16. 你如何做http性能測試?
- 17. 你會如何做這個PHP代碼?
- 18. 你如何做多對多的桌子?
- 19. 你如何做系統整合?
- 20. mySQL你如何做一個連接鏈?
- 21. 你如何做與capistrano滾動部署?
- 22. BSTR,如何讓你自己做?
- 23. 你如何做這個模擬工作?
- 24. 你如何在Clojure中做letcc?
- 25. 你如何做Crm 2011索引?
- 26. 你如何做Coffeescript的匿名課程?
- 27. 你如何做極限加載?
- 28. 你如何做實時文件跟蹤?
- 29. 你如何做jQuery的CodeIgniter序列化?
- 30. 在CasperJS你如何做等待工作?
你是什麼意思「自動測試」 - 這是我以前從未遇到過的一個術語。 – 2010-05-26 16:12:29
「autotest」由編譯器和鏈接器完成:自動語法檢查,自動符號聲明和定義,自動存儲,自動查找不可到達的代碼等。 您還想要什麼自動? – jpinto3912 2010-05-26 16:58:22