35

私は最近、由緒ある大規模な (100 万行を超える) プログラムをテストしようと試み始めました。現在、単体テストはありません。また、プログラムは個々のファイルが一緒にリンクされるようにリンクされます。コンポーネント ライブラリはありません。さらに、オブジェクトは相互依存性が高く、オブジェクト ファイルの少なくとも半分にリンクせずにオブジェクト ファイルにリンクすることは困難 (不可能?) です。

はい、私は知っています、私の人生は最悪です。

いくつかのリファクタリングを行いたいのですが (明らかに)、物事を動かし始める前にいくつかのテストを実施したいと考えています。私の現在の考えは、私が作成したすべてのテストを実行する単一の「テスト プログラム」をコンパイルすることです。これにより、私が抱えているリンクの問題が大幅に簡素化され、実際の問題に集中できるようになります。だから私は2つの質問があります:

  • 複数の BOOST 単体テスト ファイルを 1 つのテスト実行可能ファイルにリンクすることはできますか?
  • より良い解決策はありますか?
4

1 に答える 1

43

たぶん、これがまさにブーストテストの使い方です。文字通り 2 行で構成される 1 つの短い main.cpp ファイルを保持します。

#define BOOST_TEST_MODULE "C++ Unit Tests for MyTangledLibrary"
#include <boost/test/included/unit_test.hpp>

そして、1 つの実行可能ファイルにまとめてコンパイルされたテスト モジュール *.cpp ファイルを追加し続けます。

#include <boost/test/unit_test.hpp>
<< your include files >>

BOOST_AUTO_TEST_SUITE(FancyShmancyLogic)

BOOST_AUTO_TEST_CASE(TestingIf2x3equals6)
{
  ...
}

BOOST_AUTO_TEST_CASE(TestingIf2x2equals4)
{
  ...
}

BOOST_AUTO_TEST_SUITE_END()

はい、その main.cpp とすべてのモジュールを 1 つの大きな実行可能ファイルにコンパイルできます。

于 2013-03-09T22:29:25.833 に答える