c++ - GoogleTest:从测试访问环境

标签 c++ unit-testing googletest

我正在为 C++(Google 的单元测试框架)尝试 gtest,并且我创建了一个::testing::Environment 子类来初始化和跟踪我的大部分测试所需的一些东西(并且不要' 想要设置不止一次)。

我的问题是:如何实际访问环境对象的内容?我想理论上我可以在我的测试项目中将环境保存在全局变量中,但是有更好的方法吗?

我正在尝试对一些已经存在(非常复杂)的东西进行测试,因此设置非常繁重。

最佳答案

A related question针对创建 std::string 的特定情况处理此问题,给出完整的响应,展示如何使用 google 的::testing::Environment,然后从单元测试内部访问结果。

转载自那里(如果你点赞我,请也点赞他们):

class TestEnvironment : public ::testing::Environment {
public:
    // Assume there's only going to be a single instance of this class, so we can just
    // hold the timestamp as a const static local variable and expose it through a
    // static member function
    static std::string getStartTime() {
        static const std::string timestamp = currentDateTime();
        return timestamp;
    }

    // Initialise the timestamp in the environment setup.
    virtual void SetUp() { getStartTime(); }
};

class CnFirstTest : public ::testing::Test {
protected:
    virtual void SetUp() { m_string = currentDateTime(); }
    std::string m_string;
};

TEST_F(CnFirstTest, Test1) {
    std::cout << TestEnvironment::getStartTime() << std::endl;
    std::cout << m_string << std::endl;
}

TEST_F(CnFirstTest, Test2) {
    std::cout << TestEnvironment::getStartTime() << std::endl;
    std::cout << m_string << std::endl;
}

int main(int argc, char* argv[]) {
    ::testing::InitGoogleTest(&argc, argv);
    // gtest takes ownership of the TestEnvironment ptr - we don't delete it.
    ::testing::AddGlobalTestEnvironment(new TestEnvironment);
    return RUN_ALL_TESTS();
}

关于c++ - GoogleTest:从测试访问环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2435277/

相关文章:

c++ - 与 snprintf 和 size_t len 混淆

python - 有没有办法判断函数是否在单元测试中执行?

javascript - 我如何访问 React 中的方法以进行单元测试

c++ - 与 C++ 中带有引号的硬编码字符串进行比较

c++ - 匹配提升 :none in UTs

c++ - 将类成员的地址分配给方法变量以进行持久更改

c++ - 如何分析一组 C++ 类的内存消耗?

c++ - 用函数替换宏会导致 "signed/unsigned mismatch"警告

c++ - 使用 GoogleTest 测试私有(private)方法的最佳方法是什么?

c++ - 如何在 C++ 中的普通类或单例类中对私有(private)方法/枚举类进行 GoogleTest