c++ - 可以吗在 Google 测试框架内的 TDD 周期中使用全局数据进行多个测试?

标签 c++ unit-testing tdd googletest

我刚开始使用 Gtest,我正在编写如下所示的测试:

TEST(testFamily, specificTest) {
     initData data; 
     ASSERT_TRUE(boolean_algorithm(data)); 
}

问题是我的测试代码变得不必要地臃肿,因为我有很多测试可以使用相同的数据,所以行:

 initData data; 

不应为每个测试重复。我知道测试应该相互独立,在这方面,使用类似常量全局的东西

const initData data; 

带来诸如“您确定您的测试不会修改全局测试数据吗?”之类的问题。我应该为每个测试继续初始化相同的测试配置吗?有时初始化测试数据需要的代码比一行多得多....

最佳答案

没关系,但我会在测试类中创建该对象,而不是在全局范围内(如 Test Fixtures: Using the Same Data Configuration for Multiple Tests 中所述)。

例如,像这样:

initData CreateData() 
{
    initData d;
    // set values
    return d;
}

class testFamily : public testing::Test
{
public:
    testFamily() :
            data( CreateData()  )
    {
    }
    ~testFamily()
    {
    }

    initData data;
};

TEST_F( testFamily, specificTest )
{
    ASSERT_TRUE(boolean_algorithm(data)); 
}

现在,数据结构只在一个地方计算(或设置)(CreateData() 函数)。

关于c++ - 可以吗在 Google 测试框架内的 TDD 周期中使用全局数据进行多个测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21232945/

相关文章:

node.js - 使用 Bookshelf.js 和 knex.js 进行单元测试

php - 应该在简单实体中测试什么(TDD)?

unit-testing - TDD - 一次测试还是批量测试?

c++ - 映射插入键但不插入值

c++ - 为什么这段代码不断打印换行符?

关于 unordered_map 的 C++ 结构化绑定(bind)问题

javascript - Karma Angular - 找不到名称 'X'

c++ - 常量表达式中不能使用未知值的函数参数

objective-c - 如何测试 block 是否被调用

javascript - 用 mocha 测试异步函数