我坚信使用单元测试是构建大型多平台应用程序的一部分。我们目前正在计划在单独的项目中进行单元测试。这有利于保持我们的代码基础清洁。不过,我认为这会将测试代码与实施单元分开。你对这种方法有什么看法?有没有像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. iPhone项目的单元测试 - 项目完成后如何实现
- 4. 如何在C#项目中建立单元测试参考
- 5. 大型Grails项目中的集成和单元测试
- 6. 单元测试的C#项目
- 7. 单元测试实现org.springframework.context.ResourceLoaderAware
- 8. 将单元测试添加到大型python项目
- 9. 将单元测试添加到现有的Visual C++项目
- 10. .Net Core项目的VSTS单元测试:未发现测试
- 11. 单元测试C#实现为基础的测试工具
- 12. Visual Studio C++:谷歌测试的单元测试exe项目?
- 13. C#单元测试,如何测试大于
- 14. 单元测试:两个项目中存在“状态”类型
- 15. 如何测试wcf rest服务vs“单元测试项目”?
- 16. C++ - 是否有可能在单元测试中实现内存泄漏测试?
- 17. Visual Studio 2017单元测试项目vs xUnit测试项目
- 18. 如何在C#测试项目中实现全局异常处理程序
- 19. 如何在vs2010中为c#中的单元测试添加项目?
- 20. 在VS.NET 2010中构建C++单元测试项目时出现链接错误
- 21. 如何在Xcode中组织单元测试库项目?
- 22. 如何在单元测试项目中使用WPF窗口
- 23. 如何仅在Hybris项目中运行单元测试?
- 24. 如何在Visual Studio 2012 RC中创建单元测试项目
- 25. Android项目中的单元测试
- 26. 单元测试项目放在哪里
- 27. 如何测试是否在单元测试中出现异常
- 28. MVC .NET如何在现有源代码中添加单元测试项目?
- 29. 如何在Eclipse中为受管理的ARM C项目添加单元测试?
- 30. 如何在Eclipse中设置经过单元测试的C项目
有一个刚刚被问到的非常类似的问题。看看[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