0

NUnit では、TestFixtureSetup 属性を使用して、フィクスチャ内のテストの前に一度実行する必要があるメソッドをマークできます。

CppUnit に類似の概念はありますか?

そうでない場合、この概念をサポートする C++ 単体テスト フレームワークはありますか?

以下の回答に基づいて、これを達成する例を次に示します(この質問に対する回答のアドバイスに従います)。

// Only one instance of this class is created.
class ExpensiveObjectCreator
{
public:
    const ExpensiveObject& get_expensive_object() const
    {
        return expensive;
    }

private:
    ExpensiveObject expensive;
};

class TestFoo: public CppUnit::TestFixture
{
    CPPUNIT_TEST_SUITE(TestFoo);
    CPPUNIT_TEST(FooShouldDoBar);
    CPPUNIT_TEST(FooShouldDoFoo);
    CPPUNIT_TEST_SUITE_END();

public:
    TestFoo()
    {
        // This is called once for each test
    }

    void setUp()
    {
        // This is called once for each test
    }

    void FooShouldDoBar()
    {
        ExpensiveObject expensive = get_expensive_object();
    }

    void FooShouldDoFoo()
    {
        ExpensiveObject expensive = get_expensive_object();
    }

private:
    const ExpensiveObject& get_expensive_object()
    {
        static ExpensiveObjectCreator expensive_object_creator;
        return expensive_object_creator.get_expensive_object();
    }
};
4

1 に答える 1

0

フィクスチャ コンストラクタを使用できないため、これは CPPUnit がテストごとにインスタンスを使用していることを意味します。メソッドと、何度も読み取られ、最初にのみ書き込まれる静的ブール値フラグが必要になると思います。次に、コンストラクターでこれを呼び出します。

于 2010-07-02T03:16:19.637 に答える