FUKUDA Fumiki
ffuku****@ntes*****
2002年 7月 3日 (水) 15:24:05 JST
επιστημηです。 --- "[Cuppa-users:83] Re: テストデータを外から食わす" / Shin'ya MORINO / 2002/07/03 12:19:35 +0900 --- >>現時点ではレジストリに登録されたテストクラス/メソッド順にやりますが、 >>こいつをSOXで書かれた順にやるですね。なるほど。やれるはず。 >これ、Linux上では、Makefileに書かれたファイルの順番になってます。 >なんか、すっきりせんで、きになっとーたです。 たとえば辞書順に並び替えてみる: void enumerate(CppUnit::Test* test, std::vector<CppUnit::Test*>& v) { int childCount = test->getChildTestCount(); if ( childCount != 0 ) { for ( int i = 0; i < childCount; ++i ) { enumerate(test->getChildTestAt(i),v); } } else { v.push_back(test); } } bool name_order(CppUnit::Test* x, CppUnit::Test* y) { return x->getName() < y->getName(); } CppUnit::Test* reorder(CppUnit::Test* test) { std::vector<CppUnit::Test*> v; enumerate(test,v); // 中身を全部vectorに転写 std::sort(v.begin(), v.end(), name_order); // 並び替え CppUnit::TestSuite* suite = new CppUnit::TestSuite; for ( int i = 0; i < v.size(); ++i ) suite->addTest(v[i]); return suite; } CppUnit::TextUi::TestRunner runner; CppUnit::Test* test = CppUnit::TestFactoryRegistry::getRegistry().makeTest(); runner.addTest(reorder(test)); runner.run(); ...なんてことするです。 SOXからテストを列挙してその順番にreorderすればええのやから、 さほど難しくねぇです。 -----:-----:-----:-----:-----:-----:-----:-----:-----:----- FUKUDA (episteme) Fumiki -- magical, but never a magic...