【发布时间】:2018-03-02 15:06:16
【问题描述】:
我正在使用 Eclipse CDT 开发 C++ 代码。对于单元测试,我使用我通过“C++ 单元测试”插件集成到 Eclipse 中的谷歌测试。现在,当测试生成输出到标准输出时会出现问题,例如,如下例所示。
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());
}
AllTest.cpp
#include "gtest/gtest.h"
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
在构建并运行合适的运行配置后(对于带有“Google Tests Runner”的“C/C++ 单元”),“C/C++ 单元”选项卡顶部会显示一条错误消息:“Unkown error during parsing Google Test模块输出:意外的测试模块输出。”
当我在 Eclipse 中作为应用程序运行测试时,它通过并且控制台显示正确的输出。只要不产生任何输出,插件也可以通过测试(例如,将 Test.cpp 中的字符串更改为空字符串,std::string s = "";)
是否有任何解决方法允许执行通过插件生成输出的测试?我知道我可以,例如,将输出写入 ostream 并在测试期间将其设置为 ofstream。但是,我更愿意在不更改源代码的情况下进行测试。有什么想法吗?
我不太习惯用 C++ 编程,所以非常感谢任何建议。
P.S.:我正在使用 Eclipse Oxygen (4.7.0)。
【问题讨论】:
-
您从哪里获得“C++ 单元测试”插件?是this one吗?如果是这样,我建议contacting its developers,因为问题似乎与插件有关。
-
其实这是个好问题。我是按照these instructions安装的。即,直接在 Eclipse 中通过“帮助”->“安装新软件”->“C/C++ 单元测试支持”。不幸的是,几乎没有关于该工具的更多信息,它看起来更像是某种官方的 Eclipse 扩展。我很确定它不是你链接的那个。据我所知,该插件专门用于将 CUTE 框架集成到 Eclipse 中,而不是任何其他测试框架。
-
你是对的,看起来这个插件是 Eclipse CDT 本身的一部分。请问file a CDT bug report好吗?
-
实际上,您可能遇到this bug,它已经在文件中。
-
举报here
标签: c++ eclipse unit-testing eclipse-plugin eclipse-cdt