ユニットテストを開始しようとしています。私はいくつかのC++フレームワークを見ていて、Boost.Testを試してみたいと思っています。ドキュメントは非常に徹底しているように見えますが、それはちょっと圧倒されています。特に単体テストの新しい人です。だからここに私が望む状況があります:Boost.Testを使い始めるのを助ける
私は2つのクラス、Foo
とBar
を持っているとしましょう。私は、Foo
のテストスイートとBar
のテストスイートを、別々のファイルに書きたいと思っています。コマンドラインパラメータでプログラムを実行する場合にのみ、テストを実行します。私はtest_foo.cpp
のようなものであるべきだと思う
int main(int argc, const char* argv[])
{
if (argc == 1 && strcmp(argv[0], "-test") == 0)
run_all_tests();
else
return program_main(argc, argv);
}
:だから私のmain()
は次のようになります
#include "foo.hpp"
#define BOOST_TEST_MODULE Foo test
#include <boost/test/unit_test.hpp>
BOOST_AUTO_TEST_SUITE(Foo_Test)
BOOST_AUTO_TEST_CASE(Foo1)
{
Foo f;
BOOST_CHECK(f.isValid());
}
BOOST_AUTO_TEST_CASE(Foo2)
{
Foo f;
BOOST_CHECK(f.baz() == 5);
}
BOOST_AUTO_TEST_SUITE_END()
しかし、私は、テストを実行するには、実際のコマンドがある(1)かわかりません(2)実際にライブラリにどのようなテストをしたいのかを伝える方法。
だから、誰がBoost.Testでの経験がありますか?誰かが詳細な方法で助けることができますか?どうもありがとうございます。 NUnitの
のように何のスタンドアロンテストランナーがありません
私は理解していません...どのようにプログラムを正常に(テストなしで)実行しますか? – rlbond
基本的には、test_foo.cppは単一の.exeプログラムとしてビルドし、Foo&Barクラスを含むライブラリにリンクする必要があります。 boost.testヘッダーファイルの1つがすでにmain関数を定義しているので、あなたが提案したものが実行可能であるとは思わない。 – oscarkuo
実際にはあります。これはconsole_test_runnerと呼ばれています。彼はすでにメインを持っているので、OPの問題には関係しませんが。 –