web-dev-qa-db-ja.com

TDD用の単純なC ++プロジェクトの構成方法

私はGoogle Testを開発環境に導入しています。TDDの考え方を奨励し、新しい開発者がこれを可能な限り利用しやすくすることを望んでいます。比較的単純なC++ Eclipseプロジェクトで従うべき標準プロジェクト構造に関する推奨事項を探しています。これらは通常、エンジニアリングプロジェクトの場合、およそ10〜30クラス程度です。

私は現在この方法でフォルダを整理しています:

  1. src
  2. 含む
  3. テスト
  4. gtest_src

また、テストでは、プロジェクトを3つのサブプロジェクトに分割することをお勧めしますか?

すなわち:

  1. ライブラリ(テスト用)
  2. 実行可能なプロジェクト
  3. テストプロジェクト

1.と3.を1つのプロジェクトに結合する必要がありますか?

C#とPythonに重点を置いて、しばらくしてからC++に戻ってきます。この構造は、すべての新しいプロジェクトで少し苦痛なようです。

6
drexiya

これを回答として追加すると(長いので:))、プロジェクトの「最良の」構造は主観的です。

私はこの正確なアーキテクチャを自宅(CMake + XCode)と職場(Visual Studio)の両方のC++プロジェクトに適用する傾向があります。

  • 個別の単体テストライブラリ(gtest_src)を使用する
  • コア機能を実装する静的ライブラリを使用する
  • シン実行可能アプリケーションを使用する
  • テストには別のアプリケーションを使用します。

テストをコードから分離することをお勧めします(別の追加のライブラリとして、またはテストアプリケーションに直接書き込む)。

家には、次の物があります。

静的ライブラリ:

  • unittest(静的ライブラリの単体テスト)
  • ロギング(静的ライブラリのロギング)
  • net(ネットワーキングプリミティブstatic lib)
  • ツール(汎用の再利用可能なコードとツール、アルゴリズムなど)

テストライブラリ:

  • unittest-tests(動的テストlib)
  • logging-tests(動的テストlib)
  • net-tests(動的テストlib)
  • tools-tests(動的テストlib)

  • test-runner(アプリ)(入力CLI引数として渡されたテストライブラリで動作します)
  • 他のさまざまなネットワークアプリケーション
9
utnapistim