c++ - 如何在多个单元测试中使用用户输入变量?

标签 c++ unit-testing global-variables googletest

我有一个 C++11 项目,其中有许多 googletest 单元测试看起来像

TEST_F(GTest, testSomething) {
    int64_t n = 42;
    // following code depends on input size n
    ...
}

我希望能够从一个位置(最好是命令行)设置输入大小,而不是在每个测试中都有一个本地常量 n:

./RunMyProgram --gtest_filter=* --n=1000

main 应该是这样的:

int main(int argc, char **argv) {

     // TODO: parse command line argument n here

    INFO("=== starting unit tests ===");

    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();

}

我应该用什么替换我的测试函数中的 ?

TEST_F(GTest, testSomething) {
    int64_t n = ?;
    // following code depends on input size n
    ...
}

最佳答案

首先,如果您在多个测试函数中使用相同的值/参数,请考虑使用夹具。

你试图为我做的事情看起来像一个“值参数化测试”。我想这在测试世界中相当普遍,而且- tadaa,Google Test 在其高级指南中有一章,称为 "Value Parameterized Test" (哦,它使用固定装置)。

关于c++ - 如何在多个单元测试中使用用户输入变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14360802/

相关文章:

c++ - 从技术上讲,如何在堆栈跟踪中使 this 指针为空?

ios - "InvalidArgumentException"在包 NSBundle 中找不到名为 "Details"的 Storyboard

java - 访问嵌套类中的全局变量

python - 在模块函数调用之间存储状态

c++ - Cmake 找不到使用 "link_directories"的库

Visual Studio 2017 中的 C++ std::mutex lock() 访问冲突

c++ - 如何使用DCB结构设置波特率28800

bash - 如何编写可单元测试的 bash shell 代码?

Java:用 XML 定义 bean 是好的做法吗?

python - 在函数内修改全局列表