我在网上看到了以下(有用)代码,用于捕获标准输出以便在Google Test中进行检查:
testing::internal::CaptureStdout();
DoSomethingThatOutputsToStdout();
std::string result = testing::internal::GetCapturedStdout();
ASSERT_EQ(expectedString, result);
现在我唯一担心的是这个函数是internal
命名空间的一部分。 gtest_internal.h
头文件明确声明:
此头文件声明Google Test内部使用的函数和宏。它们如有更改,恕不另行通知。
但是,CaptueStdout
的定义实际上并不是 该头文件,而是驻留在gtest-port.cc
,这是一个没有类似警告的文件。但 包含在内部命名空间中。
因此,我的问题是,尽管它似乎在内部命名空间中,但是否使用该功能是否可以。我不想把自己束缚在作者可能决定随意改变的事情上。
或者我对internal
名称空间的意图缺乏理解?