我在Jenkins中使用google测试成功运行了我的单元测试,但我不知道如何显示gtest生成的.xml文件.据说gtest满足JUnit格式,所以我设置如下:
但它最终会在建筑物后出现错误.
未找到任何测试报告文件.配置错误?
构建步骤'发布JUnit测试结果报告'将构建结果更改为FAILURE
完成:FAILURE
我正在使用GoogleTest为以下课程编写测试,我收到了上述错误.
class Base
{
// Other Functions;
CSig objSig[50];
}
Run Code Online (Sandbox Code Playgroud)
Class CSig如下:
class CSig
{
//... constructor, destructor(empty) and some functions
CMod *objMod;
CDemod *objDemod;
}
CSig :: CSig
{
bIsInitialised = false;
for (int i=0; i<MAX_NUM; i++)
{
PStrokePrev[i] = 0.0;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我丢弃时CSig objSig[50],测试运行正常.
我该怎么做才能解决这个问题?另外,我需要CSig objSig[50]在Base类中.
我们需要使用Google Test Framework为wxWidgets应用程序编写单元测试.问题是wxWidgets使用宏IMPLEMENT_APP(MyApp)来初始化并进入应用程序主循环.这个宏创建了几个函数,包括int main().谷歌测试框架还为每个测试使用宏定义.
其中一个问题是无法从测试宏中调用wxWidgets宏,因为第一个宏创建函数.所以,我们发现我们可以用以下代码替换宏:
wxApp* pApp = new MyApp();
wxApp::SetInstance(pApp);
wxEntry(argc, argv);
Run Code Online (Sandbox Code Playgroud)
这是一个很好的替代品,但是wxEntry()调用进入原始的应用程序循环.如果我们不调用wxEntry(),仍然有一些应用程序的部分未初始化.
问题是如何初始化运行wxApp所需的所有内容,而不实际运行它,因此我们能够对其中的部分进行单元测试?
我目前正在尝试使用googletest与MinGW,-std=c++0x但它抱怨_stricmp is not declared in this scope当我不使用它时它不会-std=c++0x.我不知道是什么_stricmp,我刚刚发现它已定义cstring/string.h,所以为什么它在C++ 0x中消失了?
我有一个测试夹具类,目前许多测试都使用它.
#include <gtest/gtest.h>
class MyFixtureTest : public ::testing::Test {
void SetUp() { ... }
};
Run Code Online (Sandbox Code Playgroud)
我想创建一个参数化测试,它也使用MyFixtureTest提供的所有功能,而无需更改我现有的所有测试.
我怎么做?
我在网上发现了类似的讨论,但还没有完全理解他们的答案.
我无法将Google Test的ASSERT_THROW()宏与多个模板参数结合使用.考虑一下我想确保Matrix<5,1>抛出的构造:
ASSERT_THROW(Matrix<5,1>(), std::runtime_error);
Run Code Online (Sandbox Code Playgroud)
(这个例子没有多大意义,当然这不应该抛出,但它是在简化我所拥有的之后留下的.)
我从MS VC++ 2008获得此输出:
warning C4002: too many actual parameters for macro 'ASSERT_THROW'
error C2143: syntax error : missing ',' before ';'
Run Code Online (Sandbox Code Playgroud)
虽然没有问题:
ASSERT_THROW(Matrix<1>(), std::runtime_error);
Run Code Online (Sandbox Code Playgroud)
我怎样才能克服这个问题?
谢谢!
我正在使用Linux机器.我从这里下载了googletest软件包
但是,没有关于如何正确设置的安装指南或其他博客自述文件是不行的,我无法理解它在说什么?
任何人都可以提供一个简单的例子来说明如何使用该gtest包测试.cc文件中的简单函数吗?
似乎有一些答案是那种,有点理智,但我不知道如何执行.我还没有找到一个全面的答案.
Google Test不应该是已安装的库,它应该与项目一起构建.(请参阅常见问题解答.)据我所知,这意味着Google Test库是我单元测试的依赖项,应该在我第一次在项目中运行"make check"时构建.这应该在某个目录中构建Google Test库.我不知道该怎么做.它提到了一些被弃用的autotools脚本,我不确定他们在谈论什么,或者如何正确地指出我的构建.
假设构建成功,我如何编写使用我的本地编译版Google Test运行测试的测试?我假设我在test目录中放了一堆Makefile.am命令.但他们是什么?什么是使用Google Test的单元测试的例子?
我正在尝试了解Google测试夹具的工作原理.
说我有以下代码:
class PhraseTest : public ::testing::Test
{
protected:
virtual void SetUp()
{
phraseClass * myPhrase1 = new createPhrase("1234567890");
phraseClass * myPhrase2 = new createPhrase("1234567890");
}
virtual void TearDown()
{
delete *myPhrase1;
delete *myPhrase2;
}
};
TEST_F(PhraseTest, OperatorTest)
{
ASSERT_TRUE(*myPhrase1 == *myPhrase2);
}
Run Code Online (Sandbox Code Playgroud)
当我编译时,为什么在TEST_F中声明"myPhrase1"和"myPhrase2"未声明?
我是新手使用Google测试框架进行单元测试,并打算生成测试的XML报告或命令输出作为报告(我可以显然打印它).我已阅读有关生成XML报告的信息,但未能清楚地了解如何生成报告.任何帮助将不胜感激.
干杯.
googletest ×10
c++ ×8
unit-testing ×5
autotools ×1
c++11 ×1
jenkins ×1
linux ×1
macros ×1
mingw ×1
report ×1
tdd ×1
testing ×1
visual-c++ ×1
wxwidgets ×1
xml ×1