現在、モジュールのポストコーディング UT を生成しようとしています。このモジュールは入力データを DB に分類し、一致が見つかった場合は適切な値を返します。
考えられるすべての入力シナリオとそれらの期待される結果を含む表を作成した後、50 以上のテストを作成する必要があることがわかりました。テスト名と入力を除いて、すべてのテストは基本的に同じなので、ある種のテンプレートがここに収まるように見え、コードの混乱を減らします。
私が最初に想像したのは、そのようなテンプレートを作成し、入力データと期待される結果でテストに展開するマクロ、またはマクロの助けを借りてシナリオテーブルを表す構造を使用してラップするマクロでした。(ここでは C++ テンプレートでも十分だと思います)。
ただし、これが正しい道であるかどうかはわかりません。誰かがそれに取り組む方法についていくつかの推奨事項を提供できるかどうかを知りたいです. また、TDD アプローチにどのように適合するかという問題もあります。
CppUTest を使用したアイデアは次のとおりです。
#define GEN_TEST_MOD_CLASSIFIER(GROUP_NAME, TEST_NAME, PRIORITY, isCOMPRESS, isX, EXPECTING) \
TEST(GROUP_NAME, TEST_NAME) \
{ \
int hit; \
setupDB(PRIORITY, isCOMPRESS, isX); \
hit = func(PRIORITY, isCOMPRESS, isX); \
CHECK_EQUAL(EXPECTING, hit); \
}
使用例:
GEN_TEST_MOD_CLASSIFIER(Classifier_Tests, LowPriority_NoCompress_NoX__HIT, PRIO_LOW, NOT_COMPRESS, NO_X, HIT_DB)