gpt4 book ai didi

c++ - 将 googletest 与通过 std::cin 从用户获取输入的功能一起使用?

转载 作者:行者123 更新时间:2023-11-28 01:39:55 31 4
gpt4 key购买 nike

如何使用 googletest 测试依赖于用户通过 std::cin 输入的函数?

对于下面的示例,我正在寻找允许我将“2\n”添加到 std::cin 流的任何代码,以便 readUserInput() 函数将 2 读入值变量并且不需要来自用户的任何输入。

#include <iostream>
#include "gtest/gtest.h"

int readUserInput()
{
int value;
std::cout << "Enter a number: ";
std::cin >> value;

return value;
}

TEST(cin_test, Basic)
{
// need code here to define "2\n"
// as the next input for std::cin

ASSERT_EQ(readUserInput(), 2);
}

int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

最佳答案

为您的函数添加一个参数:

int readUserInput(std::istream& input)
{
int value;
std::cout << "Enter a number: ";
input >> value;
return value;
}

TEST(Some, Test) {
std::ifstream ifs;
ifs.open("someFile", std::ifstream::in);
// in production code pass std::cin
std::cout << "readUserInput from std::cin: " << readUserInput(std::cin) << std::endl;
// in testing pass some mock data from the file (or whatever)
std::cout << "readUserInput from ifs: " << readUserInput(ifs) << std::endl;
ifs.close();
}

关于c++ - 将 googletest 与通过 std::cin 从用户获取输入的功能一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47664294/

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