草庐IT

constant_test

全部标签

c++ - 在 Eclipse 中哪里可以找到解析的 Boost.Test 输出

已经有一个帖子here这部分回答了我的问题。在Eclipse3.7.2上,我按照那里提供的方法成功完成了创建和设置新错误解析器并将其添加到当前项目的步骤。执行我的Boost.Test(boostrel.1.48.0)单元测试后,在Eclipse控制台上,我得到的输出与未完成解析时得到的输出相同(例如,在Eclipse之外执行单元测试时(例如在Linux上)终端))。我搜索了一个新的Eclipse控制台,可以在其中显示已解析的单元测试输出(类似于Eclipse中的gcov、gprof或cppcheck等控制台),但没有发现任何相似之处。解析后的单元测试输出应该显示在哪里?如果解析的输出应

c++ - 如何让 Google Test 检测 Linux 上的线程数?

运行使用Google测试框架编写的死亡测试时,会为每个测试生成以下警告:[WARNING].../gtest-death-test.cc:789::Deathtestsusefork(),whichisunsafeparticularlyinathreadedcontext.Forthistest,GoogleTestcouldn'tdetectthenumberofthreads.有没有办法让GoogleTest检测Linux上的线程数? 最佳答案 我查看了源代码,结果发现线程数的检测仅适用于MacOSX和QNX,而不适用于Lin

c++ - 使用 Google Test 期望在给定范围内的值

我想指定一个值在上限和下限之间的期望值。GoogleTest提供LT、LE、GT、GE,但无法测试我能看到的范围。您可以使用EXPECT_NEAR并处理操作数,但在许多情况下,这不像显式设置上限和下限那样清晰。用法应该类似于:EXPECT_WITHIN_INCLUSIVE(1,3,2);//2isinrange[1,3]如何添加这种期望? 最佳答案 Googlemock有更丰富的可组合匹配器:EXPECT_THAT(x,AllOf(Ge(1),Le(3)));也许这对你有用。 关于c++

c++ - C++11 之前的 "Constant expressions"

constexpr关键字是在C++11中引入的,因为(我认为)是“常量表达式”的相应概念。然而,这个概念隐含在C++98/c++03中,因为数组声明需要一个常量表达式://valid:inta[sizeof(int)];intb[3+7];intc[13/4];constintn=3;intd[n];//invalid:intm=4;inte[m];还有其他“常量表达式”,即可以(和/或必须)在编译时计算的表达式;一个例子是模板参数。对于C++11之前的版本,C++98/03标准或其他地方是否存在以下内容?需要常量表达式的语法结构的完整列表(例如数组声明和模板实例化)管理此类常量表达式

c++ - 如何使用 Google Test 测试 EXE?

我在VisualStudio中有一个C++项目,并添加了另一个专用于测试的项目。这两个项目都是EXE(控制台应用程序)。那么如何在第二个项目中使用第一个项目呢?只是为了澄清,如果第一个项目是一个可以简单地包含在第二个项目中的库,那么这里的问题将是不言而喻的,但是作为一个EXE,这就是问题所在。 最佳答案 根据您的评论,您有一个C++控制台应用程序(MyApp),您已经为其开发了一些特定于应用程序的类,您希望在其中使用googletest进行单元测试视觉工作室。如何?正如您所说,如果您想对库进行单元测试,那么这样做的方法是明显的。你会

c++ - boost.test 与 CppUnit

我使用CppUnit已经有一段时间了(我很满意)。随着我们使用越来越多的boost库部分,我对boost.test进行了简短的了解,现在我想知道是否应该在新项目中切换到boost.test。谁能告诉我这两个框架之间的区别以及使用boost.test的好处(如果有的话)? 最佳答案 这比Boost.Test替代方案更不笨重:classMyFixture{MyFixture(){/*setuphere*/}};BOOST_AUTO_TEST_CASE(my_test,MyFixture){BOOST_CHECK_EQUAL(0,foo)

c++ - C/C++ : Optimization of pointers to string constants

看看这段代码:#includeusingnamespacestd;intmain(){constchar*str0="Watchmen";constchar*str1="Watchmen";char*str2="Watchmen";char*str3="Watchmen";cerr(const_cast(str0))(const_cast(str1))(str2)(str3)产生这样的输出:0x4430000x4430000x4430000x443000这是在Cygwin下运行的g++编译器上。即使没有开启优化,指针也都指向同一个位置(-O0)。编译器是否总是优化得如此之多,以至于它会

c++ - std::is_constant_evaluate 行为

GCC9已经实现了std::is_constant_evaluated。我用它玩了一点,我意识到它有点棘手。这是我的测试:constexprintFn1(){ifconstexpr(std::is_constant_evaluated())return0;elsereturn1;}constexprintFn2(){if(std::is_constant_evaluated())return0;elsereturn1;}intmain(){constexprinttest1=Fn1();//Evaluatesto0inttest2=Fn1();//Evaluatesto0intcons

c++ - 警告 : overflow in implicit constant conversion

在下面的程序中,第5行确实按预期给出了溢出警告,但令人惊讶的是,第4行在GCC中没有给出任何警告:http://www.ideone.com/U0BXnintmain(){inti=256;charc1=i;//line4charc2=256;//line5return0;}我在想这两行都应该给出overflow警告。还是我缺少什么?我做这个实验的主题是:typedeftypechecking?在那里我说了以下内容(我从答案中删除了,因为当我运行它时,它并没有像我预期的那样显示)://However,you'llgetwarningforthiscase:typedefintT1;ty

c++ - 如何在基于 CMake 的项目中使用 Boost.Test?

我的项目使用CMake作为其构建系统,我希望它执行我的Boost.Test测试用例。我怎样才能做到这一点?在Boost.Build中,我可以这样做:importtesting;use-project/my_lib:../src;unit-testmy_test:my_test.cpp/my_libboost_unit_test_framework;libboost_unit_test_framework; 最佳答案 CMake本身只是一个构建系统;CTest是一个与CMake集成的公正测试运行器。单元测试框架也不是。这项工作可以由B