gpt4 book ai didi

c++ - 针对具有 gtest 程序的以下情况进行设计

转载 作者:行者123 更新时间:2023-11-28 05:13:43 24 4
gpt4 key购买 nike

在我当前的实现中,我有 2 个文件(我卡住了,没有进一步)

//firstFile.cpp
class first
{
//some object of xyz class
};

first f; //global

TEST(Suite, Testcase
{
//do something
}



//secondFile.cpp
class second
{
public:
//some data members

void function()
}

任务:- 我想调用 TEST(将其视为一个特殊函数,当它被调用时,第一个对象(即定义的全局对象将被创建)。在测试中我想保存一些数据以供后续处理,这显然我不能在头等舱做,因为它会在每次 TEST 调用时初始化。

问题 :- 我虽然有一个单独的类(在另一个 .cpp 文件中),它需要保存数据结构。我想要一种在 TEST 过程中访问这些数据结构的方法,并在每次 TEST 调用时继续在以前的数据上添加数据。我不能在 firstFile.cpp 中有第二类的对象,因为它也会在每次调用时创建/销毁。

有什么建议吗?我也无法对 TEST 程序做任何事情,这就是它的方式。

最佳答案

在 gtest 中,您可以定义测试装置。这有点像为一组测试定义上下文。它为您提供了在每次测试之前/之后以及测试套件运行之前/之后进行设置/拆卸的方法。请注意,SetUpTearDown 区分大小写。

struct MyFixture : testing::Test
{
private:
// stuff
protected:
//! Called before running all tests
static void SetUpTestCase();
//! Called after running all tests
static void TearDownTestCase();

//! Called before each test
void SetUp() {}
//! Called after each test
void TearDown() {}

public:
static SomeSharedObject& GetSharedObjInTest() {}
};

在测试用例中你需要调用

TEST_F(MyFixture, MyTest_Name)
{
// some cool stuff here
}

您可以简单地在该夹具中创建一个 first 的静态实例,在 SetUp() 中对其进行初始化,然后使用静态 getter 从不同的测试中访问它。

引用文档gtest - Sharing resources between tests in the same test case

关于c++ - 针对具有 gtest 程序的以下情况进行设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43076696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com