2016-05-12 68 views
0

我目前正在为我的公司重构qt/C++应用程序的某些部分,他们完全没有单元测试。如何在编译时排除单元测试

我想添加一些,但我其实从来没有做过测试的设置,所以我不是100%确定最好的方式来进行。下面是我在想什么(随意对此置评,但它不是我的主要问题)

  • ,因为我们使用QT我将使用QTEST库,我不想其他的lib添加到该项目
  • 在src目录下的每个子文件夹,我会添加与测试类的测试文件夹对应于目录中找到的类(我们的目标是让测试类接近他们测试的内容)

我的问题是:我该如何(或应该)阻止测试类在发布时被编译/包含? 我的意思是,如果我设法得到一个大的测试覆盖率,这将是大量的新的测试代码来编译,这对应用程序本身没有用处。我们可以(我们是否应该)在发行版本中排除此代码?常用的做法是什么(如果有的话)?

+1

作为解决方案的一部分,您可以将单元测试设置为单独项目吗?这通常是从我的理解完成.net项目。只要你的“部署的项目”不包含对单元测试项目的引用(它不应该),它就不应该成为部署包的一部分。对不起,如果这是远离基地,在做出假设之前没有用过C++。 – Kritner

+0

是的,它可以是一个解决方案,我发现几个例子创建一个特定的cmake文件来创建一个单元测试项目。但我认为这将意味着我必须将测试类放在特定的单独测试文件夹下,并且我觉得如果所有测试都在另一个位置,我们很快就会忘记更新它们。 –

+1

那么,理想情况下运行单元测试是构建过程的一部分。如果你的单元测试正在运行并破坏,你很快就会注意到:P。随着实现的急剧变化,它可能会破坏一些单元测试。对于新功能,它只需要成为正常开发过程的一部分。 – Kritner

回答

1

如果您正在使用CMake,在您的CMakeLists中,您可以定义在当前版本中使用哪些文件。

在同一个CMake中,可以定义一个包含测试文件的不同目标。文件的位置无关紧要,它们可以与代码位于同一位置