在我目前的实施中,我有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 procdedure做任何事情,这就是它的方式。
答案 0 :(得分:1)
在gtest中你可以定义测试夹具。这有点像为一组测试定义上下文。它为您提供了在每次测试之前/之后,也可以在测试套件运行之前/之后的SetUp / TearDown内容的方法。请注意,SetUp
和TearDown
区分大小写。
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
}
您可以在该fixture中创建一个first
的静态实例,在SetUp()中初始化它,并使用静态getter从不同的测试中访问它。
请参阅文档gtest - Sharing resources between tests in the same test case