就自动测试而言,您如何为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