[Cuppa-users:84] Re: テストデータを外から食わす

Zurück zum Archiv-Index

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...



Cuppa-users メーリングリストの案内
Zurück zum Archiv-Index