C+中的单元测试+; 我在大学里做C++项目,我们需要对我们的班级进行单元测试。测试非常简单-我们没有任何处理数据库、GUI、web等的“有问题”类。它只是一个命令行程序

C+中的单元测试+; 我在大学里做C++项目,我们需要对我们的班级进行单元测试。测试非常简单-我们没有任何处理数据库、GUI、web等的“有问题”类。它只是一个命令行程序,c++,unit-testing,C++,Unit Testing,一个尽可能简单的好的单元测试框架是什么?请提供该框架中测试的简短示例 编辑:我看到了一些答案,所以我想补充另一个问题:我应该把测试方法放在哪里?它们是否在不同的文件中声明?那个文件在哪里?如何运行所有测试?Boost。把手放下 #define BOOST_TEST_MODULE my_tests // use once per test program #include <boost/test/unit_test.hpp> BOOST_AUTO_TEST_CASE( case_x

一个尽可能简单的好的单元测试框架是什么?请提供该框架中测试的简短示例

编辑:我看到了一些答案,所以我想补充另一个问题:我应该把测试方法放在哪里?它们是否在不同的文件中声明?那个文件在哪里?如何运行所有测试?

Boost。把手放下

#define BOOST_TEST_MODULE my_tests // use once per test program
#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_CASE( case_x )
{
  ....
  BOOST_CHECK( ... boolean expression ... );
  BOOST_etc...etc...
}
#定义BOOST_TEST_MODULE my_tests//每个测试程序使用一次
#包括
增压自动测试案例(案例x)
{
....
BOOST_检查(…布尔表达式…);
等等…等等。。。
}

有很多类似的。我比较喜欢的是图书馆。如果需要,它可能会很复杂,但对于简单的情况,它也非常简单。e、 g.最简单的可能情况如下:

#include <boost/test/minimal.hpp>

int add( int i, int j ) { return i+j; }

    int test_main( int, char *[] )             // note the name!
    {
        // six ways to detect and report the same error:
        BOOST_CHECK( add( 2,2 ) == 4 );        // #1 continues on error
        BOOST_REQUIRE( add( 2,2 ) == 4 );      // #2 throws on error
        if( add( 2,2 ) != 4 )
          BOOST_ERROR( "Ouch..." );            // #3 continues on error
        if( add( 2,2 ) != 4 )
          BOOST_FAIL( "Ouch..." );             // #4 throws on error
        if( add( 2,2 ) != 4 ) throw "Oops..."; // #5 throws on error

        return add( 2, 2 ) == 4 ? 0 : 1;       // #6 returns error code
    }
#包括
intadd(inti,intj){返回i+j;}
int test_main(int,char*[])//注意名称!
{
//检测和报告相同错误的六种方法:
升压检查(加(2,2)=4);/#1继续出错
BOOST_REQUIRE(添加(2,2)==4);/#2抛出错误
如果(加上(2,2)!=4)
BOOST_错误(“哎哟…”);//#3继续出错
如果(加上(2,2)!=4)
BOOST_FAIL(“哎哟…”);//4抛出错误
如果(添加(2,2)!=4)抛出“Oops…”;//5抛出错误
返回add(2,2)==4?0:1;//#6返回错误代码
}
此示例使用

非常好。我喜欢测试的实际编写比Boost稍微少一些(Boost的UTF非常优秀),但是它确实能产生漂亮的控制台日志,并且在Windows和大多数POSIX平台上都有这样的颜色。

在C++编程时对各种单元测试选项有很好的了解。p> IMHO,+是您要寻找的:

UnitTest++是一个轻量级单元 C++的测试框架 它的设计目的是进行测试驱动 开发多种多样的 平台。简单性、便携性、, 速度快,占地面积小 UnitTest++非常重要的方面


Cunit如果没有很好的理由不这样做,您应该链接到Boost的最新版本,即1.45。@BjörnPollex:您知道Boost文档是否有独立于版本的链接吗?因为我没有找到一个,我想避免在Boost发布新版本时更新所有与Boost相关答案的链接。@AndyT:如果用
release
替换链接中的版本号,它将始终解析为最新版本。本文的问题是它已经过时。例如,Google test甚至没有被考虑,针对每个测试框架的一些投诉已经得到解决。它有一个方便的GUI。你能提供更多关于这个文件放在哪里的详细信息吗?它是
.cpp
还是
.h
等等?它是.cpp-“多余的垃圾来填充注释要求”我如何编译它?使用不同的makefile?makefile中应该包含什么?除了测试用例之外,我还需要编写其他代码吗?它是可执行文件吗?它是否在编译时运行测试?
#include "stdafx.h"
#include "UnitTest++.h" 

TEST( HelloUnitTestPP )
{
   CHECK( false );
} 

int main( int, char const *[] )
{
   return UnitTest::RunAllTests();
}