如何在EclipseCDT中使用google测试管理测试输出? 我正在用Eclipse CDT开发C++代码。对于单元测试,我使用GoogleTest,它通过“C++单元测试”插件集成到Eclipse中。现在,当测试生成输出到标准输出时会出现问题,例如,如下面的示例所示

如何在EclipseCDT中使用google测试管理测试输出? 我正在用Eclipse CDT开发C++代码。对于单元测试,我使用GoogleTest,它通过“C++单元测试”插件集成到Eclipse中。现在,当测试生成输出到标准输出时会出现问题,例如,如下面的示例所示,c++,eclipse,unit-testing,eclipse-plugin,eclipse-cdt,C++,Eclipse,Unit Testing,Eclipse Plugin,Eclipse Cdt,Test.cpp: #include <iostream> #include <string> #include "gtest/gtest.h" TEST(TestSuite, TestCase) { std::string s = "str"; std::cout << s; ASSERT_STREQ(s.c_str(), s.c_str()); } 在构建并运行合适的运行配置(对于带有“Google Tests Runner”

Test.cpp:

#include <iostream>
#include <string>

#include "gtest/gtest.h"

TEST(TestSuite, TestCase) {
    std::string s = "str";
    std::cout << s;
    ASSERT_STREQ(s.c_str(), s.c_str());
}
在构建并运行合适的运行配置(对于带有“Google Tests Runner”的“C/C++单元”)之后,“C/C++单元”选项卡在顶部显示一条错误消息:“解析Google测试模块输出时出现未知错误:意外的测试模块输出。”

当我在Eclipse中作为应用程序运行测试时,测试通过,控制台显示正确的输出。测试也会随插件一起通过,只要它们不生成任何输出(例如,将Test.cpp中的字符串更改为空字符串,
std::string s=“”;

是否存在允许通过插件执行生成输出的测试的变通方法?例如,我知道我可以将输出写入ostream,并在测试期间将其设置为ofstream。但是,我更愿意在不更改源代码的情况下进行测试。有什么想法吗

我不习惯用C++编程,所以非常感谢你的任何建议。
注意:我使用的是Eclipse Oxygen(4.7.0)。

显然,如果测试生成控制台输出,只要输出字符串以换行符结尾就没有问题。例如:

std::cout << "someoutput\n";

std::cout显然,如果测试生成控制台输出,只要输出字符串以换行符结尾,就不成问题。例如:

std::cout << "someoutput\n";

std::cout“C++单元测试”插件是从哪里来的?它是?如果是这样的话,我会建议,因为问题似乎与插件有关。事实上,这是一个好问题。我是根据你的要求安装的。即,直接在Eclipse中通过“帮助”-->“安装新软件”-->“C/C++单元测试支持”。不幸的是,关于这个工具几乎没有任何进一步的信息,它看起来更像某种正式的Eclipse扩展。我很确定这不是你链接的那个。据我所知,该插件专门用于将可爱的框架集成到Eclipse中,而不是任何其他测试框架。你说得对,该插件似乎是EclipseCDT本身的一部分。你可以吗?事实上,你可能正在运行一个已经在文件中的插件。提交了一份报告,你是从哪里获得“C++单元测试”插件的?它是?如果是这样的话,我会建议,因为问题似乎与插件有关。事实上,这是一个好问题。我是根据你的要求安装的。即,直接在Eclipse中通过“帮助”-->“安装新软件”-->“C/C++单元测试支持”。不幸的是,关于这个工具几乎没有任何进一步的信息,它看起来更像某种正式的Eclipse扩展。我很确定这不是你链接的那个。据我所知,该插件专门用于将可爱的框架集成到Eclipse中,而不是任何其他测试框架。你说得对,该插件似乎是EclipseCDT本身的一部分。你能不能?事实上,你可能遇到了已经存档的。提交了一份报告
std::cout << "someoutput1";
...
std::cout << "someoutput2\n";