我知道关于C单元测试框架的建议已经存在一些问题,但所有答案都没有帮助,因为他们只是推荐其中一个框架,但没有提供有关(特征)比较的任何信息. 我认为最有趣的框架是CppUnit,Boost和新的Google测试框架.有人做过任何比较吗?解决方法:See this question进行了一些讨论. 他们推荐文章: E
它没有记录在网站上,人们似乎在设置框架时遇到了问题.有人可以展示一个示例项目设置的分步介绍吗?解决方法:Arlaharen说的基本上是正确的,除了他遗漏了解释你的链接器错误的部分.首先,您需要在没有CRT作为运行时库的情况下构建应用程序.无论如何,您应该始终这样做,因为它确实简化了
我正在接管一个通过ATL公开组件的项目. 我看到单元测试的两个主要区域覆盖了这个设置: >测试内部组件(可能通过COM暴露也可能不暴露) >测试外部暴露的组件(也称测试暴露的接口) 目前,该项目的所有内部组件单元测试都在解决方案中.它们由预处理程序标志启用,该标志将其编译并在您运行
我想提供ostream<<和wostream<<一个类的运算符,除了一个是宽流而另一个不是. 有没有一些技巧可以做到这一点,而不仅仅是复制粘贴和进行必要的调整? 作为参考,这是必要的,因为我们使用wostream作为标准,但是当没有ostream<<时,Google测试的EXPECT_PRED3无法编译.提供,即使其他宏愉
朋友们, 在过去的两周里,我一直在研究单元测试代码覆盖率工具,根据我们的特定需求进行评估.我想评估的最后一个是Visual Studio自己的本机C单元测试的代码覆盖率.在我们的解决方案中,我们有以下内容: >具有大型项目的完整Visual Studio 2013开发环境 多100 k行代码已经用GTEST编写了
我在Windows上编写了一些单元测试(Visual Studio 2017),我需要在Linux上移植它们(GCC 4.9.2 – 我坚持使用这个版本……).我已经为我的问题提供了一个简单的例子,它在Windows上编译得很好(我不认为它应该编译,因为MyParamType是来自e模板基类的依赖类型)并且不能在Linux上编译. 例
我有一个C 11项目,有许多googletest单元测试看起来像 TEST_F(GTest, testSomething) { int64_t n = 42; // following code depends on input size n ... } 我希望能够从一个位置设置输入大小,而不是在每个测试中都有一个局部常量n,最好是命令行: ./RunMyProgram --g
是否可以返回调用invoke后得到的值? 例如, int foo(int a, int b) {return a+b;} class FooMock { MOCK_METHOD0(MockMethod, int(int a, int b)); } void bar() { FooMock mock; EXPECT_CALL(mock,MockMethod(_,_)).WillRepeatedly(DoAll(Invoke(foo),Return(result_of_fo
ASSERT_TRUE和ASSERT_FALSE都不会在带有错误的LibraryTest类中编译. error C2664: ‘std::basic_string<_Elem,_Traits,_Alloc>::basic_string(const std::basic_string<_Elem,_Traits,_Alloc> &)’ : cannot convert parameter 1 from ‘void’ to ‘const std::basic
我在我继承的项目中进行了测试,看起来与此类似 std::string value("test string"); const char * buffer = value.c_str(); EXPECT_CALL(object, foo(_,_,buffer, buffer.size(), _)).WillOnce(Return(0)); bar(value); 缓冲区是指向一串数据的char *.我已经插入了像对象这样的虚
我想用Google Test测试这个功能: foo() { if(some_grave_error) exit(1); // do something } 如果foo调用std :: exit(),我希望我的测试失败.我该怎么做呢?它与EXPECT_EXIT的作用相反?解决方法:你应该使foo()可测试: using fexit_callback = void(*)(int); void foo
当我运行以下代码时: #include "gmock/gmock.h" #include "gtest/gtest.h" #define _CRTDBG_MAP_ALLOC #include <crtdbg.h> int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); _CrtDumpMemoryLeaks(); retur
以下测试代码创建服务器和clientocket.然后客户端向服务器和服务器回复发送消息.就这样.但我无法编译.线程函数中的所有ASSERT_EQ都会引发错误“错误:无法忽略void值,因为它应该是”.我不知道这应该告诉我什么.这里有什么问题?类型与ASSERT_EQ(1,1)无关;也引发了错误. 编辑在谷歌的常
我是Google Test的新手,我正在玩提供的示例.我的问题是,当我引入故障并设置GTEST_BREAK_ON_FAILURE = 1(或使用命令行选项)时,GTest将会出现段错误. 我正在考虑this example.如果我在任何测试中插入这样的东西,我将开始得到段错误: EXPECT_EQ(8,2 * 3); 重申一下,这只是在我设置了GT
在我的一个应用程序中,我有一个负责用户输入的类.输入的默认方法是控制台(键盘),我想为它编写一些单元测试以确保它是正确的. 我正在考虑使用google-test框架进行单元测试,这样可以轻松实现所有测试的自动化.但是,我不确定如何自动测试控制台输入. 有没有办法模拟键盘上的用户输入?
我用模拟课写了一个小测试.当我运行它时,首先我得到一个警告,即调用了一个无趣的模拟函数,然后测试失败,因为没有满足期望,即模拟函数被调用至少一次.有趣的是,当我看到上面的警告信息时,调用该函数. 你对这件事有什么看法吗? 谢谢! 编辑:这是我的代码结构: class Bla { public:
我已经设法根据this.安装了Google Test 我的问题如下:我必须测试正在为具有32位操作系统的嵌入式软件开发的项目,因此我需要从64位重新配置Google Test. 使用旧的1.7.0版本,它知道解决方案是这样的: autoreconf -fvi ./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS
此篇主要了解一下GoogleTest中的断言。 总的来说,GoogleTest中的断言分为两大类:EXPECT_*和ASSERT_*,这两者在测试成功或失败后均会给出测试报告,区别是前者在测试失败后会继续执行下面的测试,而后者在测试失败后会立即终止测试。 GoogleTest中的比较断言,涉及整型,字符串, 浮点型,布尔型