我正在为一个大型产品编写测试,其中包括2000 c++类。主要产品的解决方案有5个项目。我为编写测试制定了一个单独的解决方案,并在其中添加了主要项目的包含目录和库目录。在我的单元测试项目(在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文件中,我将注册该夹具类并执行以下测试操作
TEST_F(FixtureClassName, testFunction)
{
// testing logic and asserts
}
// more test cases对于所有测试类必须使用的通用功能,我已经在我的测试项目中创建了实用程序类,当任何类需要该功能时,它只调用在这些实用程序类中编写的函数。
我已经为大约20个类编写了测试,当我运行测试代码时,它会运行在所有类中编写的测试(在所有过滤器中)。我想问,怎样才能进一步改善它的结构?
有没有一种方法可以让我运行--一次只运行一个类夹具的测试?
我的测试项目应该在主产品解决方案中吗?还是我为它制定了一个单独的解决方案是正确的?
我在这链接中读到了一篇讨论,它表明当我们开始编写测试时,我们必须为每个类分别创建可执行文件。我如何使单独的可执行文件,这是一个更好的方式?
发布于 2018-09-14 09:31:22
一件事是,如果您的产品代码是由5个项目组成的,乍一看,有5个测试项目是有意义的,这样每个项目都可以单独进行测试(基本的关注点分离)。
如果一个项目依赖于其他项目的某些类,这是典型的情况,您将实现Mock类来进行测试。
那么5个测试可执行程序(当然不是2000 )?每堂课一次?我怀疑这有什么意义。)
有意义的是为每个生产类有一个类测试夹具。但这是第一个天真的实现,因为至少有两个案例需要考虑
对于下一个问题,让他们在同一个解决方案或在一个单独的解决方案是由你决定的。
同样的解决方案-专业:
相同的解决方案缺点:
最后,您可以决定使用gtest_filter运行哪个测试,如@nos注释中提到的那样。但这与您应该如何构建这些测试无关。
https://stackoverflow.com/questions/33666236
复制相似问题