CMake CTestプロジェクトの作成


CMakeエンジニアリングの最上位ディレクトリ内のCMakeLists.txtファイルに最後の行を追加し、ディレクトリ構造にtestディレクトリが含まれ、コンパイルが完了するとbuildディレクトリの下でtest_が生成されます.binディレクトリ.
cmake_minimum_required(VERSION 2.8)
project (your_project_name)
add_subdirectory(src bin)
add_subdirectory(test test_bin)

step2
テストディレクトリの下にあるCMakeLists.txtファイルにはsrcディレクトリの下のように構成されています.必要なライブラリは、中に追加されます.ただし、以下の設定が必要です.
include(CheckFunctionExists)
include(CheckCXXSourceCompiles)
include(CheckLibraryExists)
include(CPack)
enable_testing()
...
add_test(name your_test command your_test)

step3
テストディレクトリの下にmain関数を作成し、テストコードを作成します.boostのtestフレームワークを使ってみましたが、まだ成功していません.そのため、マクロ(CppCMSの著者Artyomから)を使用しました.
///////////////////////////////////////////////////////////////////////////////
//                                                                             
//  Copyright (C) 2008-2010  Artyom Beilis (Tonkikh) <[email protected]>     
//                                                                             
//  This program is free software: you can redistribute it and/or modify       
//  it under the terms of the GNU Lesser General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU Lesser General Public License for more details.
//
//  You should have received a copy of the GNU Lesser General Public License
//  along with this program.  If not, see <http://www.gnu.org/licenses/>.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef CPPCMS_TEST_H
#define CPPCMS_TEST_H


#include <stdexcept>
#include <sstream>


#define TEST(X) 								\
	do {									\
		if(X) break;							\
		std::ostringstream oss;						\
		oss << "Error " << __FILE__ << ":"<<__LINE__ << " "<<#X;	\
		throw std::runtime_error(oss.str());				\
	}while(0)	


#endif

このマクロを使用するのは簡単です.たとえば、次のようにします.
TEST(result >= 66);

step4
buildディレクトリコンパイルに入り、コンパイルに成功したらtest_に入ります.binディレクトリはctestを実行し、画面には簡単な結果情報が表示されます.
Test project /home/chenshu/work/CommonService/trunk/c++/PipeLine2/build/test_bin
    Start 1: similarity_test
1/1 Test #1: similarity_test ..................***Failed    0.31 sec

0% tests passed, 1 tests failed out of 1

Total Test time (real) =   0.89 sec

The following tests FAILED:
	  1 - similarity_test (Failed)
Errors while running CTest

さらにTesting/Temporary/ディレクトリが生成する、このディレクトリにはいくつかのファイル、CTestCostDataが含まれている.txt  LastTest.log  LastTestsFailed.log、詳細なテスト情報はすべてその中にあります.