0

Boost Test ライブラリを使用してアプリケーションのテストを作成したいと考えています。

http://www.boost.org/doc/libs/1_47_0/libs/test/doc/html/tutorials/new-year-resolution.htmlで見つけたチュートリアルに従って、テスト クラスを開始しました。

したがって、テスト用のクラスを作成しました。単純な .cpp はこれです

#define BOOST_TEST_MODULE MyClass test
#include <boost/test/unit_test.hpp>

#include "myclasstest.h"

MyClassTest::MyClassTest()
{

}

/**
 * Test the class.
 */
bool MyClassTest::testClass()
{
    BOOST_AUTO_TEST_CASE(empty_test)
    {
        MyClass xTest;
        BOOST_CHECK(xTest.isEmpty());
    }

return true;
}

OK、true を返すよりももっと賢いことをしなければならないことはわかっていますが、それは問題ではありません。問題は、コンパイルされないことです。チュートリアルのページで説明されているように、最初の 2 行だけでコンパイルするとエラーが発生しないため、ライブラリは正しく読み込まれていると思います。

コンパイルしようとすると、GCC から次のエラー出力が表示されます。

myclasstest.cpp: In member function ‘bool MyClassTest::testClass()’:
myclasstest.cpp:16:5: error: a function-definition is not allowed here before ‘{’ token
myclasstest.cpp:16:1: error: ‘empty_test_invoker’ was not declared in this scope
myclasstest.cpp:16:5: error: template argument for ‘template<class T> struct  boost::unit_test::ut_detail::auto_tc_exp_fail’ uses local type ‘MyClassTest::testClass()::empty_test_id’
myclasstest.cpp:16:5: error:   trying to instantiate ‘template<class T> struct boost::unit_test::ut_detail::auto_tc_exp_fail’
myclasstest.cpp:17:5: error: a function-definition is not allowed here before ‘{’ token
myclasstest.cpp:23:1: error: expected ‘}’ at end of input
myclasstest.cpp:23:1: warning: no return statement in function returning non-void

Boost は初めてなので、何をすればよいかわかりません。私が間違っていることは何ですか?チュートリアルと同じ手順を実行したと思いますか?

返信ありがとうございます。

4

2 に答える 2

0

メンバー関数ではない BOOST_AUTO_TEST_CASE を使用する必要があります。例えば:

#define BOOST_TEST_MODULE MyClass test
#include <boost/test/unit_test.hpp>

#include "MyClass.h"

BOOST_AUTO_TEST_CASE( testMyClass )
{
   MyClass xTest;
   BOOST_CHECK(xTest.isEmpty());
}

テスト コンテキストが必要な場合は、フィクスチャを確認してください。

于 2012-02-21T20:52:47.610 に答える
0

BOOST_AUTO_TEST_CASE は、ファイル スコープに配置する必要があります。関数の実装内に配置することはできません。クラス メソッド ベースのテスト ケースを使用できますが、自動登録では使用できません (当面の間)。詳細については、ドキュメントを確認してください

于 2011-11-29T17:08:50.563 に答える