2

要件に合ったテスト フレームワークを探しています。自動テスト中に実行する必要がある手順は次のとおりです。

  • セットアップ (いくつかの入力ファイルがあり、特定のフォルダーに読み取るかコピーする必要があります。)
  • 実行 (スタンドアローンで実行)
  • Tear Down (クリーンアップしてシステムを古い状態に戻す)

これとは別に、.cc ファイルが変更された場合、変更を検証できるすべてのテストを実行する必要があることを確認するためのインテリジェンスも必要です。

これについては、scons を使用して PyUnit、cppunit を評価しています。私が正しい方向に進んでいることを確認するために、この質問を実行することを考えました。他のテスト フレームワーク ツールを提案できますか? また、適切なテスト フレームワークを選択するために、他にどのような要件を考慮する必要がありますか?

4

2 に答える 2

5

googletest AKA gTestを試してみてください。他の単体テスト フレームワークよりも悪くはありませんが、使いやすさでいくつかを打ち負かすことができます。探している統合テスト用のツールではありませんが、ほとんどの場合に簡単に適用できます。このウィキペディアのページも役に立つかもしれません。

gTest プロジェクト ページのサンプルのコピーを次に示します。

#include <gtest/gtest.h>

namespace {

// The fixture for testing class Foo.
class FooTest : public ::testing::Test {
 protected:
  // You can remove any or all of the following functions if its body
  // is empty.

  FooTest() {
    // You can do set-up work for each test here.
  }

  virtual ~FooTest() {
    // You can do clean-up work that doesn't throw exceptions here.
  }

  // If the constructor and destructor are not enough for setting up
  // and cleaning up each test, you can define the following methods:

  virtual void SetUp() {
    // Code here will be called immediately after the constructor (right
    // before each test).
  }

  virtual void TearDown() {
    // Code here will be called immediately after each test (right
    // before the destructor).
  }

  // Objects declared here can be used by all tests in the test case for Foo.
};

// Tests that Foo does Xyz.
TEST_F(FooTest, DoesXyz) {
  // Exercises the Xyz feature of Foo.
}

Scons は.cc、変更されたときにビルドを処理できます。gTest を使用して、テストのセットアップとティアダウンを行うことができます。

いくつかのケースでは gTest を使用し、他のほとんどすべてのケースではカスタムの社内テスト自動化フレームワークを使用していることを付け加えることができます。このようなツールでは、要件に合わせて他のツールを調整したり微調整したりするよりも、独自のツールを作成する方が簡単な場合がよくあります。

IMO の 1 つの良いオプションであり、これは私たちのテスト自動化フレームワークが目指しているものであり、一般的なルーチンのライブラリ (サービスの開始/停止、何かのステータスの取得、特定のコンポーネントでのログの有効化/無効化など) と組み合わせて、nosetestsを使用することです。 . これにより、非常に使いやすく柔軟なシステムが得られます。また、C++ などではなく Python を使用するため、多くの人が QE を含むテスト ケースの作成に忙殺される可能性がありますが、これは必ずしも C++ を記述できる必要はありません。

于 2010-01-17T09:31:54.380 に答える
2

少し前にこの記事http://gamesfromwithin.com/exploring-the-c-unit-testing-framework-jungleを読んだ後、私は CxxTest に行きました。

セットアップが完了したら (たとえば、python をインストールする必要があります)、テストを作成するのは非常に簡単です (私は単体テストはまったく初めてでした)。

仕事で使用し、ソリューションのビジュアル スタジオ プロジェクトとして統合しています。テストが失敗するとクリック可能な出力が生成され、ソリューションをビルドするたびにテストがビルドおよび実行されます。

于 2010-01-17T16:34:31.303 に答える