我正在为大型产品编写测试,其中包括 2000 c ++类。主要产品的解决方案有5个项目。我为编写测试提出了一个单独的解决方案,并在其中添加了主项目的include和lib目录。在我的单元测试项目(在visual studio中),我创建了一个具有以下代码的主类
#include "gtest/gtest.h"
int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
return 0;
}
除此之外,我为主要产品解决方案的每个项目制作了五个过滤器。每个过滤器都包含主产品解决方案项目中的类的测试类。在每个测试类中,有一个装置,SetUp和TearDown指针变量,在cpp文件中,我正在注册该fixture类并执行测试操作如下
TEST_F(FixtureClassName, testFunction)
{
// testing logic and asserts
}
// more test cases
对于必须由所有测试类使用的常用功能,我在我的测试项目中创建了实用程序类,当任何类需要该功能时,它只调用这些实用程序类中编写的函数。
我已经编写了大约20个类的测试,当我运行我的测试代码时,它运行在所有类中编写的测试(在所有过滤器中)。 我想问一下,我怎样才能进一步改进它的结构?
我是否有办法运行一次一个类灯具的测试?
我的测试项目是否应该在主要产品解决方案中,还是我为其制定单独解决方案的正确方法?
我已经阅读了this链接中的讨论,这表明当我们开始编写测试时,我们必须为每个类创建单独的可执行文件。如何制作单独的可执行文件?这是一种更好的方法吗?
答案 0 :(得分:0)
一件事是,如果您的生产代码由5个项目组成,乍看之下就有5个测试项目是有意义的,因此可以单独测试每个项目(关注的基本分离)。
如果一个项目依赖于其他项目的某些类,则通常是实施Mock类以进行测试的情况。
所以有5个测试可执行文件(当然不是2000?每个类一个?我怀疑这样做是否有意义。)
有意义的是为每个生产类都配备一个类测试治具。但这是第一个简单的实现,因为至少需要考虑以下两种情况
对于下一个问题, 将它们放在相同的解决方案中还是在单独的解决方案中取决于您。
相同的解决方案专业版:
相同的解决方案缺点:
最后,您可以决定使用gtest_filter运行哪种测试,如@nos的注释中所述。但这与如何构建这些测试无关。