在Windows 86,TI的Android使用Boost 1.46.1 2.2加速測試案例和套房燈具
我定義我自己的測試套件的樹,因爲我需要的用戶選擇的測試順序。儘管我知道測試應該是獨立的,但這是一項要求。測試套件樹使用我自己的實現test_suite* init_unit_test_suite(int, char**)
重新定義。
對於自動化測試用例和自動化測試套件,有Boost宏:BOOST_FIXTURE_TEST_CASE
和BOOST_FIXTURE_TEST_SUITE(suite_name, F)
。這些宏將函數註冊到framework::master_test_suite()
,在這種情況下這是不希望出現的行爲。
全局夾具(BOOST_GLOBAL_FIXTURE(fixure_name)
)在手動測試套件定義中不受影響。
我想在手動定義的測試套件和案例的Boost單元測試框架中使用燈具。一個整潔的方式。
有一些解決方法:
- 測試套件夾具 - 可以被定義爲中 第一和最後一個測試的兒童套房/件。然而,這會影響測試結果,並且 作爲單獨的測試,這不是一個很好的解決方案。
- 測試用例夾具 - 通過圍繞測試用例 功能包裝一個範圍實例。
有沒有其他的,更清潔和更好的解決我的問題?我真的沒有資源深入Boost圖書館。另一方面,我不想顯着降低代碼的質量和可讀性。
問候,LK
#include <boost/bind.hpp>
#include <boost/smart_ptr.hpp>
#include <boost/test/unit_test.hpp>
using namespace boost::unit_test;
BOOST_GLOBAL_FIXTURE(GFixture);
test_suite* init_unit_test_suite(int, char**)
{
test_suite* ts1 = BOOST_TEST_SUITE("Suite1");
boost::shared_ptr<TestClass1> test1 (new TestClass1);
ts1->add(BOOST_TEST_CASE(boost::bind(&TestClass1::Run, test1)));
boost::shared_ptr<TestClass2> test2 (new TestClass2);
ts1->add(BOOST_TEST_CASE(boost::bind(&TestClass2::Run, test2)));
boost::shared_ptr<TestClass3> test3 (new TestClass3);
ts1->add(BOOST_TEST_CASE(boost::bind(&TestClass3::Run, test3)));
framework::master_test_suite().add(ts1);
return 0;
}
單元測試框架:用戶指南
http://www.boost.org/doc/libs/1_46_1/libs/test/doc/html/utf/user-guide.html
謝謝你的努力Alexandr。然而,這個自動測試案例/套件解決方案並不是我所期待的。使用這些宏可以在編譯時定義順序,並且還可以在一個文件中定義測試。我正在尋找只能通過重新定義'test_suite * init_unit_test_suite(int,char **)'函數才能實現的運行時訂單配置。你的代碼和'BOOST_FIXTURE_TEST_CASE(Test1,TestClass1)'一樣(在Test1的情況下)。 – Sha