gpt4 book ai didi

c++ - 使用 gtest 1.6 : how to check what is printed out? 进行单元测试

转载 作者:太空狗 更新时间:2023-10-29 20:26:41 25 4
gpt4 key购买 nike

我如何检查将某事打印到命令行的 void 函数?

例如:

void printFoo() {
cout << "Successful" < endl;
}

然后在 test.cpp 中我放了这个测试用例:

TEST(test_printFoo, printFoo) {

//what do i write here??

}

请解释清楚,因为我是单元测试和 gtest 的新手。谢谢

最佳答案

您将不得不更改您的函数以使其可测试。最简单的方法是将 ostream(cout 继承)传递给函数,并在单元测试中使用字符串流(也继承 ostream)。

void printFoo( std::ostream &os ) 
{
os << "Successful" << endl;
}

TEST(test_printFoo, printFoo)
{
std::ostringstream output;

printFoo( output );

// Not that familiar with gtest, but I think this is how you test they are
// equal. Not sure if it will work with stringstream.
EXPECT_EQ( output, "Successful" );

// For reference, this is the equivalent assert in mstest
// Assert::IsTrue( output == "Successful" );
}

关于c++ - 使用 gtest 1.6 : how to check what is printed out? 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18908923/

25 4 0
文章推荐: c++ - 什么时候调用 Qt 插槽?
文章推荐: c# - 如何模拟 JsonReader 单元测试自定义 JsonConverter
文章推荐: oop - Python:将实例方法动态分配为实例属性有什么问题
文章推荐: c# - .NET Core