我正在开发一个C++库,其中包括读取配置文件的功能.我想为此添加测试.到目前为止,这导致我创建了许多有效和无效的配置文件,每个配置文件只有几行来测试一个特定的功能.但它现在变得非常笨拙,因为有太多的文件,还有很多小的C++测试应用程序.不知怎的,这对我来说似乎不对:-)所以你有提示如何组织所有这些测试,测试应用程序和测试数据吗?
注意:库的公共API本身不易测试(它需要配置文件作为参数).实际读取和解释配置值的多汁,容易出错的方法是私有的,所以我没有看到直接测试它们的方法?
所以:你会坚持测试真实文件; 如果是这样,您将如何组织所有这些文件和应用程序,以便它们仍然可维护?
也许库可以接受某种流输入,所以你可以传入一个类似字符串的对象并避免所有的输入文件?或者根据配置类型,您可以直接提供"get/setAttribute()"函数,公开,调整参数.如果这不是一个真正的设计目标,那就别担心了.在某些地方,数据驱动的单元测试是不受欢迎的,但它肯定比没有好!我可能会像这样列出代码:
project/ src/ tests/ test1/ input/ test2 input/
在每个testN目录中,您将有一个与输入目录中的配置文件关联的cpp文件.
然后,假设您使用的是xUnit样式的测试库(cppunit,googletest,unittest ++或其他),您可以将各种testXXX()函数添加到单个类中,以测试相关的功能组.通过这种方式,您可以通过将至少一些测试组合在一起来减少部分很少的程序问题.
唯一的问题是,如果库期望配置文件被调用特定的东西,或者在特定的地方.情况应该不是这样,但如果必须通过将测试文件复制到预期位置来解决它.
并且不要担心大量的测试会使项目混乱,如果它们隐藏在测试目录中,那么它们就不会打扰任何人.