2

編集:この質問は、「実際のプログラミングの質問ではない」ため、投票が終了する可能性があります。「にゃー!」としか言い返せません。今、私はこの質問を見つけました。これは直接関連しており、役立つはずです。

私はソース コードを C++11 の時代に合わせて整然とアップグレードしています。多くのコードがやり取りする部分の 1 つは UnitTest++ です。

すべての実装ファイルの後半をcpp単体テスト専用にしているため、多くの実装ファイルが含まれています。

TEST(testname) {
  // test code
}

宣言。

現在、UnitTest++ は約 8 年前のものですが、今でも問題なくコンパイルできるので、早急に置き換える必要はありません。しかし、ウェブサイトとソースフォージがダウンしているため、おそらくメンテナンスされていないことがわかりました (既存の機能は確かに十分に堅固に見えますが、これは悪い兆候です)。

したがって、私のコードは今は問題なく動作しますが、後でよりも早くより良いシステムに切り替えることは、将来の翻訳の負担を軽減するので、今は有益かもしれません.

少し調べてみたところ、いくつかの選択肢があるようです。特に興味深いのはlibunittestと、ヘッダーのみのCATCHのようなものです。

私の質問は、過去に UnitTest++ や他の単体テスト システムを使用した経験がある人に、何がうまくいったのか、何か推奨事項があるかどうかです。非常に移植性が高く、C++98/03 または C++11 コンパイラ (gcc、clang、msvc) および標準ライブラリ以外の外部依存関係がなく、ヘッダーのみであることがプラスになるものを探しています。しかし、必要ではありません。

ですから、私の好みは選択肢をかなり狭める傾向があると思います. UnitTest++ でも、その移植性と自己完結型を楽しんでいますが、次の 2 つの方法で柔軟に拡張するには、約 100 行程度のコードを書かなければなりませんでした。

  • 実行する特定のテストを指定できるようにする (テストを名前で選択するか、テストが実装されているソース ファイルで選択するか、テスト スイート名で選択するか)
  • テストごとのタイミングデータを表示し、最後に合計を要約するなど、テストのレポート動作をカスタマイズします-実際には、この機能と動作に多少不満があります。たとえば、詳細なテストを適用するように UnitTest++ を構成する方法がわかりませんテスト スイート内に配置されていないテストに対して実行するレポーター。

完璧な答えは、UnitTest++ 自体の背後にいる人物の 1 人に他なりません! しかし、その記事は10年前のものです!!

4

2 に答える 2

2

Google Testが役に立つかもしれません。UnitTest++ が行うことすべてをサポートし、現在も維持されています (そして Google 内で定期的に使用されています)。さらに、対応するモック ライブラリ、モックを作成するためのGoogle Mockがあります。これは、モックの実装を作成するのに非常に役立ちます。

于 2014-12-30T08:27:02.910 に答える