静的なlibプロジェクトとunit-testsを持つコンソールアプリケーションでVisual Studio C++ソリューションを検討してください。成功したコンパイルごとにテストを自動的に実行するために、アプリケーションのビルド後のステップは"$(TargetDir)$(TargetFileName)"
です。コンパイルが成功するたびにユニットテストが実行される
コンパイルに成功したがテストが失敗した場合は、時々デバッグしたいので、VSから実行する必要があります。問題は、テストが失敗してもビルドが失敗したとみなされ、VSが実行を拒否した場合です。
Aあなたが失敗したビルドを実行しようとすると、理想的なソリューションは、オプション
を可能にすることにあるではないので、あなたが
(オプションはデフォルトでon
しかし、遅かれ早かれ、誰であるの取得"このダイアログを再度表示しない"をクリック)
これは紛らわしいので、理想的ではありません。ビルドを再開します(コンパイルはskippです)。テストは成功したものの、テストは再び実行され、オプションはグローバルな意味であり、必要としないプロジェクトであってもすべてのプロジェクトに適用されます。それは確かに非常に大きな問題ではない、人々がこれのためにいくつかの賢いハックを持っているかどうかだけでは不思議。
たとえば、C#プロジェクトのビルドイベントには、「ビルド時にプロジェクトの出力が更新されたとき」というオプションがあります。各コンパイル後にユニットテストに最適です。
プロジェクトはクロスプラットフォームなので、VSテストフレームワークは適用されません。
なぜVSですか?テストフレームワークは適用されませんか?他のプラットフォームでMSBuildを使用していないと仮定して、ここでは必然的にプラットフォーム固有のソリューションを求めています。 – Sneftel
@Sneftel:単体テストはクロスプラットフォームなので、私たちはGoogleテストを使用します。大部分の開発はWindowsのVSで行われます(これはかなり一般的な設定だと思います)。私のVSテストフレームワークに関する知識は限られていますが、ここでどのように役立つのでしょうか? –
単体テストを主プロジェクトに依存する別々のプロジェクトにするのはどうですか?ビルドに失敗した場合、メインプロジェクトはビルド済みとしてマークされます。 – VTT