2016-05-12 5 views
0

私は現在、私の会社のqt/C++アプリケーションの一部をリファクタリングしており、単体テストはまったくありません。コンパイル時に単体テストを除外する方法

私はいくつかを追加したいと思いますが、私は実際にテスト用の設定を行ったことがないので、進める最良の方法を100%確信していません。ここで私は考えていたものです(これについてコメントして自由に感じるが、それは私の主な問題ではありません)

  • 我々はQTを使用するので、私はQTestライブラリを使用しますと、私が別のlibを追加する必要はありませんsrcディレクトリの各サブフォルダにプロジェクト
  • は、私は(目標は、彼らがテストするものに近いテストクラスを維持することです)
ディレクトリで見つかったクラスに対応するテストクラスとテストフォルダを追加します

私の質問は:テストクラスをコンパイル/リリースに含めるにはどうしたらいいですか? 私は、大きなテストカバレッジを得ることができれば、コンパイルするための新しいテストコードがたくさんあることになり、アプリケーション自体にとっては役に立たないことになります。リリース版でこのコードを除外することはできますか?一般的なプラクティス(ある場合)は何ですか?

+1

ユニットテストはソリューションの一部として別のプロジェクトとしてセットアップできますか?これは、通常、私の理解から.netプロジェクトで行われます。あなたの "配備されたプロジェクト"が単体テストプロジェクトへの参照を含んでいない限り、それは配備されたパッケージの一部であってはなりません。申し訳ありませんが、これは基本的な方法ではないので、C++で作業していないので、前提としています。 – Kritner

+0

はい、解決策になるかもしれませんが、私が発見したいくつかの例では、特定のcmakeファイルを作成して単体テストプロジェクトを作成しています。しかし、これは、テストクラスを特定の別個のテストフォルダの下に置く必要があることを意味し、すべてのテストが別の場所にあるように感じたら、更新することをすばやく忘れるでしょう。 –

+1

ビルドプロセスの一部です。あなたの単体テストが実行され、壊れている場合、すぐに気付くでしょう:P。実装が大幅に変更されると、単体テストが壊れる可能性があります。新しい機能性のためには、通常の開発プロセスの一部になるだけでよいでしょう。 – Kritner

答えて

1

CMakeを使用している場合は、CMakeListsで現在のビルドで使用するファイルを定義できます。

同じCMakeでは、テストファイルを含む別のターゲットを定義できます。ファイルの場所は関係ありません。コードと同じ場所に置くことができます

関連する問題