2017-02-01 5 views
7

単体テストにCPPUnitを使用したプロジェクトに参加しましたが、おそらくセットアップとティアダウンのコードを共有するテストを追加します。この研究ではより多くの私はCPPUnitでのテストスイートプロパティの使用例は何ですか? (CPPUNIT_TEST_SUITE_PROPERTY)

CPPUNIT_TEST_SUITE_PROPERTY 

に出くわした(https://people.freedesktop.org/~mmohrhard/cppunit/group___writing_test_fixture.htmlから)

その説明は

を言うテストスイートビルダーコンテキストにプロパティを追加します。

http://cppunit.sourceforge.net/doc/cvs/group___writing_test_fixture.html次の言葉:

私はそれが、その予想用途や目的がどうなるかわからないテストスイートビルダーコンテキストに

をプロパティを追加しますが表示されるのように私は共通の情報などを共有するのに役立つかもしれません。私はその使用例は見当たりません。

これの価値は何ですか、私に指摘する例がいくつありますか?

答えて

4

this piece of codeによれば、テストスイートを作成しているときに特定のテストのパラメータとして渡すことができるはずです。

はたぶん目標は、あなたができるようにすることでした:

#define CPPUNIT_TEST_WITH_PARAM(testMethod,param) \ 
    CPPUNIT_TEST_ADD(new CppUnit::ParameterizedTestCase<ThisTestFixtureType>(\ 
             context.getTestNameFor(#testMethod), \ 
             #testMethod, \ 
             &TestFixtureType::testMethod, \ 
             context.makeFixture(), \ 
             context.getStringProperty(param))) 

CPPUNIT_TEST_SUITE(MyTestSuite); 
CPPUNIT_TEST_SUITE_PROPERTY("param1", "foo") 
CPPUNIT_TEST_SUITE_PROPERTY("param2", "bar") 
CPPUNIT_CPPUNIT_TEST_WITH_PARAM(func, "param1") 
CPPUNIT_CPPUNIT_TEST_WITH_PARAM(func, "param2") 
CPPUNIT_TEST_SUITE_END(); 

void func(const std::string& param); 

そして、これはfunc("foo")func("bar")を呼び出して終了しているだろう。それは、文字列のパラメータ化されたテストを追加することが可能になったため、いいでしょう。

しかし

、およびParameterizedTestCaseは1.12.1古いリリースの一部ではなく、またそれがrecent releases以上の一部であるとして、これは、単なる推測の試みである(そうCPPUNIT_TEST_ADDマクロはありません)、私は、これは明らかにした何かであると考えていますリリース計画では中止され、マクロCPPUNIT_TEST_SUITE_PROPERTYはここでは役に立たない。 getStringPropertyも残っていて、正しく使用できるとは思えませんでした。

結論として、これは壊れたもののように見えますが、セットアップ/ティアダウンコードを共有するのではなく、パラメータテスト(これは実際にはテンプレートで行うことができます。this postを参照してください)。

関連する問題