C++ 谷歌考试-课前

C++ 谷歌考试-课前,c++,unit-testing,googletest,C++,Unit Testing,Googletest,我正在运行谷歌测试 上课前我需要一些东西。我有SetUp()和TearDown()函数,但它们在每个测试之前和之后运行。现在我需要一些全局性的东西,比如ctor,它应该在类加载时只运行一次。从类继承::testing::Environment和override methodsSetUp和TearDown,这些方法将包含全局设置和拆卸的代码。然后,在运行测试的可执行文件的主函数中,调用函数::testing::AddGlobalTestEnvironment(),然后调用运行所有测试()。有关更多

我正在运行谷歌测试


上课前我需要一些东西。我有
SetUp()
TearDown()
函数,但它们在每个测试之前和之后运行。现在我需要一些全局性的东西,比如
ctor
,它应该在类加载时只运行一次。

从类继承
::testing::Environment
和override methods
SetUp
TearDown
,这些方法将包含全局设置和拆卸的代码。然后,在运行测试的可执行文件的主函数中,调用函数
::testing::AddGlobalTestEnvironment()
,然后调用
运行所有测试()。有关更多信息,请查看文档:


您可以在每个夹具类中定义静态成员函数
void SetUpTestCase()
void teardownttestcase()
,即在从
::testing::Test
派生的每个类中

该代码对于每个装置仅运行一次,在装置中的所有测试运行之前和之后


检查一下

请详细说明“类加载时的一次”。你指的是什么类,类“加载”是什么意思?我指的是在所有测试开始之前运行的东西。不针对每个测试用例进行设置。Perez-如何针对所有测试(在所有测试用例中)进行设置?我的意思是,我希望在每次测试之前运行相同的SetUp方法,以及在每次测试之后运行相同的TearDown方法,而不添加/编辑任何现有类?@GuyAvraham:AFAIK框架中没有允许您这样做的钩子函数。您可能需要通过为
:testing::Test
定义一个子类,然后使您的测试类从中派生出来来自己构建它。请注意,在较新版本的gtest中,您可能需要使用
SetUpTestSuite()
TearDownTestSuite()
方法。如果您想要全局首次初始化,只是第一次可以使用静态互斥和静态bool初始化。但不确定上次全局拆卸.页面是否移动->