草庐IT

C++ 谷歌测试除以零

我正在学习编写单元测试,并从我想测试的简单“计算器”类开始。我弄清楚了如何使用EXPECT/ASSERT函数,以及测试用例等是什么,但是当我想测试被零除时遇到了问题。有没有可能进行测试?我的意思是,我应该写什么作为测试结果?有没有类似“ERROR”的东西?还是我必须使用异常(exception)?到目前为止,这些是我的测试:TEST(TestCalc,TestPos){Calccalculate;EXPECT_EQ(10.0,calculate.add(5.0,5.0));EXPECT_EQ(9,calculate.mul(3,3));EXPECT_EQ(9,calculate.div

c++ - Boost::Test——Main() 的生成?

我对设置boost测试库有点困惑。这是我的代码:#include"stdafx.h"#defineBOOST_TEST_DYN_LINK#defineBOOST_TEST_MODULEpevUnitTest#includeBOOST_AUTO_TEST_CASE(TesterTest){BOOST_CHECK(true);}我的编译器生成非常有用的错误消息:1>MSVCRTD.lib(wcrtexe.obj):errorLNK2019:unresolvedexternalsymbol_wmainreferencedinfunction___tmainCRTStartup1>C:\Use

c++ - CPPUnit 我如何编写测试?

好吧,我基本上是想着手编写一些CPPUnit测试,但我不知道该怎么做。这里我有一些代码,基本上是为关联的按钮组和位置参数获取指向菜单按钮的指针,我将如何为此创建测试?CMenuButton*CMenuContainer::GetButton(constenumButtonGroupargGroup,constint32_targPosition){CMenuButton*pButton=NULL;if(argGroup作为对@FabioCeconello的回复,是否可以为这样的代码设置一些测试?unsignedlongCCRC32::Reflect(unsignedlongulRefl

c++ - C++ 中类似 QuickCheck 的模板函数基准测试

受到Haskell自动生成(随机)给定类型实例的优雅方式的启发,例如在QuickCheck中,我正在尝试弄清楚如何编写一个as-easy-to-use-as-可能的C++基准测试框架。我想我将使用函数模板,可能会借助C++11中的新功能,例如可变参数模板。我希望我只需要指定一个函数或更好的函数模板和一个与函数的参数兼容的STL模板容器类型(反过来它的value_type)。我认为,使用一组不同大小的输入对函数进行基准测试有点类似于C++11中线程的设置和生成方式。我的第一个尝试是复制thread类的构造函数并将其转换为benchmark函数作为templateinlinevoidben

C++:首先调用/初始化哪个?其成员变量的类构造函数或构造函数?

在我的main中,如何在Cpp中初始化这样的东西:Testingtest?classTesting{public:Testing();voidinitalize();~Testing();voidrun();private:intx;inty;intz;boolisBugged;OtherClassotherClass_;};顺序是什么? 最佳答案 首先调用类构造函数,并且可以使用初始化列表来参数化成员构造函数调用,否则在类构造函数入口点使用它们的默认构造函数。Class():otherClass_("fred",42){//cto

c++ - 如何测试阻塞与异步?

我正在尝试使用googletest/mock测试阻塞与异步。不幸的是,我无法想出某种测试来确保异步在第一种情况下发生,而在第二种情况下发生阻塞。有没有办法确认std::future的行为是否正常?代码#include#includestaticunsigneda_slow_calc(){sleep(1);return1u;}TEST(Test_future,Ensure_async){//1.immediatelyreturnsstd::futureanswer=std::async(a_slow_calc);//2.std::future::getBLOCKSuntiltheresu

c++ - boost::test 中是否有可以返回错误值的函数?

BoostTestLibrary是一个非常有用的单元测试框架。但是,我感到不舒服的一件事是,在单元测试期间,如果发生错误,它会通知用户而不是程序本身。让我以BOOST_CHECK为例来阐明我的观点:i=3;j=4;BOOST_CHECK(i==j);上面的测试用例会失败。因此,检查细节以找出此测试失败的原因将非常有趣。在这种情况下,如果程序知道单元测试失败,打印一些变量或执行更复杂的操作(例如将文件写入磁盘)将是必要的。但是,BOOST_CHECK不会返回一个值来表示测试是否成功。一个完美的函数应该是这样的:i=3;j=4;if(Enhanced_BOOST_CHECK(i==j)==

c++ - 如何在 Google Test 中为一个夹具运行多个测试用例?

假设我有一个名为ProfileTest的GoogleTestfixture继承自::testing::TestWithParams创建一个解析器:classProfileTest:public::testing::TestWithParam>{public:QStringgetName(){returnQFileInfo(*m_file).fileName();}protected:voidSetUp(){m_profile=newProfile();m_file=newQFile(std::get(GetParam()).c_str());m_file->open(QIODevice

c# - 为什么 if( !A && !B ) 不能优化为单个 TEST 指令?

if(!A&&!B)似乎应该编译为moveax,dwordptr[esp+A_offset]testeax,dwordptr[esp+B_offset]jne~~~~~~~~~~编译器实际生成moveax,dwordptr[esp+A_offset]testeax,eaxjne~~~~~~~~~~moveax,dwordptr[esp+B_offset]testeax,eaxjne~~~~~~~~~~看这里转储8B45F8moveax,dwordptr[b]837DFC00cmpdwordptr[a],07504jnemain+32h(0A71072h)85C0testeax,eax7

c++ - Google Test with CLion 未运行测试

我正在尝试使用googletest和CLion运行一个简单的测试。我认为我已经正确设置了cmake,并且能够“运行测试”。当我这样做时,它说没有找到测试。有任何想法吗?CMakeLists.txtcmake_minimum_required(VERSION3.7)project(expirement)find_package(ThreadsREQUIRED)set(CMAKE_CXX_STANDARD14)set(SOURCE_FILESmain.cppgetstring.cpptests.cpp)include(${CMAKE_ROOT}/Modules/ExternalProjec