0

テストの1つでコマンドライン引数を使用したいと思います。ウェブ上でこの例を見つけることができませんでした。

TEST(SomeTest)
{
    std::string file("this is some command line argument");
    CHECK(something);
}

int main(int argc, char** argv)
{
    return UnitTest::RunAllTests();
}

何か案は?

4

2 に答える 2

1

あなたが探しているのは、それぞれに新しいテストを作成せずに「テスト入力」を指定できる機能だと思います。

テスト ルーチンを実行したい 3 セットのテスト データがあるとします。走りたいだけ

./unittest_build SomeTest file1
./unittest_build SomeTest file2
./unittest_build SomeTest file3

テストビルドにテストを焼き付けずに。

ただし、次のようにすることもできます。

void runCheck(const std::string& filename) {
    std::string file(filename);
    // well, you're gonna do stuff here
    CHECK(something);
}

TEST(SomeTest)
{
    runCheck(std::string("your first testing datafile"));
    runCheck(std::string("your second testing datafile"));
    runCheck(std::string("your third testing datafile"));
    // this is what your test is. It tests these files. 
}

int main(int argc, char** argv)
{
    return UnitTest::RunAllTests();
}

テストをパラメーター化するということは、テストが単なるテストではなくなることを意味します。これは単体テストではなく関数になりました。

于 2011-12-14T07:13:12.830 に答える