首页 / 知识
如何为Visual Studio C ++设置单元测试
2023-04-11 17:34:00

How to set up unit testing for Visual Studio C++我想弄清楚如何建立测试框架并在Visual Studio 2008 for C ++中使用大概是内置的单元测试套件。 任何链接或教程,将不胜感激。 该页面可能会有所帮助,它回顾了许多C ++单元测试框架:
签出CPPUnitLite或CPPUnitLite2。 CPPUnitLite由迈克尔·费瑟斯(Michael Feathers)创建,他最初将Java的JUnit移植为C ++作为CPPUnit(CPPUnit试图模仿JUnit的开发模型-但C ++缺乏Java的功能[例如反射]使其易于使用)。 CPPUnitLite尝试建立一个真正的C ++样式的测试框架,而不是移植到C ++的Java。 (我从Feather的《有效处理旧版代码》一书中解说)。 CPPUnitLite2似乎是另一个重写,具有更多功能和错误修复。 我还偶然发现了UnitTest ++,其中包括CPPUnitLite2和其他框架中的内容。 Microsoft已发布WinUnit。 同时结帐Catch或Doctest 有一种方法可以使用Visual Studio 2008中的内置测试框架来测试非托管C ++。如果使用C ++ / CLI创建C ++测试项目,则可以调用非托管DLL。如果要测试用非托管C ++编写的代码,则必须将公共语言运行时支持从/ clr:safe切换到/ clr。 我在这里的博客上有逐步的详细信息:http://msujaws.wordpress.com/2009/05/06/unit-testing-mfc-with-mstest/ 这是我用来在Microsoft测试IIS URL Rewrite模块的方法(它是基于命令行的,但也应该适用于VS): 这是一个例子:
使用这种方法,人们不必学习太多的C ++ / CLI知识,所有真正的测试都将在C ++本机中完成,并且将使用TestShim类将测试"发布"到MSTest.exe(或使其可见)。 )。 要添加新测试,只需声明一个新的[TestMethod] void NewTest(){:: NewTest();}方法和一个新的void NewTest()本机函数。没有宏指令,没有技巧。 现在,可以选择heade文件,但是可以使用它来公开带有C ++本机签名的Assert类的方法(例如,用wchar_t *代替Stirng ^),因此可以使它与C ++接近,而与C ++ / CLI远离: 这是一个例子:
HTH 就我个人而言,我更喜欢WinUnit,因为它不需要我写测试以外的任何东西(我将.dll作为测试而不是exe构建)。我只是构建一个项目,然后将WinUnit.exe指向我的测试输出目录,它会运行找到的所有内容。您可以在此处下载WinUnit项目。 (MSDN现在要求您下载整个问题,而不是文章。WinUnit包含在其中。) VS9包含的框架是.NET,但是您可以用C ++ / CLI编写测试,因此,只要您愿意学习一些.NET形式,就应该能够测试大多数任何C ++代码。
如Boost.Test 我们使用的框架是CxxTest,它轻巧得多。它仅是标题,并使用Perl(!)脚本从标题中刮取测试套件信息(套件继承自CxxTest :: Base,所有测试方法的名称均以" test"开头)。显然,这要求您从一种或多种来源获得Perl,这会增加构建环境设置的开销。 此处提到的工具都是命令行工具。如果您需要更集成的解决方案,请查看cfix studio,它是用于C / C ++单元测试的Visual Studio插件。它与TestDriven.Net非常相似,但是适用于(非托管)C / C ++,而不是.NET。 我使用UnitTest ++。 自从我发表这篇文章以来的几年中,源代码已经从SourceForge转移到了github。此外,示例教程现在更加不可知-完全不需要进行任何配置或项目设置。 我怀疑它是否仍适用于Visual Studio 6,因为现在通过CMake创建了项目文件。如果仍然需要较旧的版本支持,则可以在SourceForge分支下获取最新的可用版本。 我正在使用Visual Studio在Windows环境中为非托管C ++应用程序实施单元测试。因此,我设法克服并写了一篇文章,作为对非托管C ++应用程序单元测试的逐步指导。希望对您有帮助。 Visual Studio中非托管C ++的单元测试 出于相同的原因,我也喜欢CxxTest。它只是一个头文件,因此不需要链接。您也不会被Perl所吸引,因为它也有Python运行器。我将很快复习Google图书馆。 Boost的东西会带来太多其他负担。 据我所知,VisualStudio2008的单元测试器仅适用于.NET代码。 我在VisualStudio2005上使用了CppUnit,发现它相当不错。 据我所知,该设置相对来说很轻松。只要确保您的测试项目中的链接器(链接器→输入→其他依赖项)包含cppunitd.lib。
然后,在标题中输入 然后,您可以按照http://cppunit.sourceforge.net/doc/1.11.6/cppunit_cookbook.html中的步骤进行操作,以使测试类正常工作。 我对VS2008不确定100%,但是我知道Microsoft在VS2005中作为Team Suite的一部分提供的单元测试框架仅适用于.NET,而不适用于C ++。 我也用过CppUnit,没关系。与NUnit / JUnit /等等基本相同。 如果您使用过Boost,他们还有一个单元测试库 boost背后的家伙有一些严重的编码问题,所以我想说他们的框架应该很好,但是它可能不是最用户友好的:-) 我在VS2005和Eclipse中使用了CppUnit。 Wiki非常详尽(特别是如果您熟悉JUnit)。 |
最新内容
相关内容
python单元测试中的函数整理
python单元测试中的函数整理,培训,环境,测试,方法,函数,单元,条件,实例,里面,以上,python单元测试中的函数整理1、setUp准备环境。执行每个测python__setattr__的属性设置
python__setattr__的属性设置,数据,管理,培训,属性,方法,实例,字典,函数,是非,下面,python中__setattr__的属性设置1、说明定义类对象管理属关于xaml:WPF:如何设置或禁用文本框
关于xaml:WPF:如何设置或禁用文本框的默认ContextMenu,关于xaml:WPF:如何设置或禁用文本框的默认ContextMenu,用户,应用程序,单击,鼠标关于unix:允许用户设置SSH隧道,但无
关于unix:允许用户设置SSH隧道,但无其他设置,关于unix:允许用户设置SSH隧道,但无其他设置,用户,身份,我想,该用户,Allow user to set up<PMXU1> 这些链接现在似乎变得乱七
这些链接现在似乎变得乱七八糟(Windows Client .NET链接甚至不再在DNS上解析),这些链接现在似乎变得乱七八糟(Windows Client .NE关于单元测试:如何使初级程序员编写
关于单元测试:如何使初级程序员编写测试?,关于单元测试:如何使初级程序员编写测试?,试了,程序员,你写,有一个,How to make junior progra设置与SVN的持续集成
设置与SVN的持续集成,设置与SVN的持续集成,设置,工具,网站,控制,Setting up Continuous Integration with SVN您将推荐使用哪些工具关于单元测试:如何模拟Sealed类?
关于单元测试:如何模拟Sealed类?,关于单元测试:如何模拟Sealed类?,模拟,模式,密封,密封类,How do you mock a Sealed class?模拟密封课程关于c ++:链接问题(VC6)
关于c ++:链接问题(VC6),关于c ++:链接问题(VC6),测试工具,工作空间,个旧,工作,Link issues (VC6)我打开了一个旧的工作空间,它是一个li在Windows上进行Mono开发的最佳设
在Windows上进行Mono开发的最佳设置是什么?,在Windows上进行Mono开发的最佳设置是什么?,插件,尝试,转换为,一起玩,What's the best se关于单元测试:TDD和BDD之间的主要区
关于单元测试:TDD和BDD之间的主要区别是什么?,关于单元测试:TDD和BDD之间的主要区别是什么?,测试驱动开发,我在,社区,热门话题,What are.val将函数作为参数设置文本框的值
.val将函数作为参数设置文本框的值,.val,将,函数,作为,参数,设置,文本,框,的,值,, .val( value ) .val( value )返回: jQ