まったく同じ API と機能を共有する 2 つのクラスがあります (同じ機能を提供するために、異なるサードパーティ API をラップしています)。2 つのクラスには、共通の基本クラス/インターフェイスがありません。
そのうちの1つにブーストユニットテストがあり、もう1つでもまったく同じテストを実行したいのですが、今のところ、テストをコピーして貼り付け、クラス名を検索/置換する方法しか知りません。2 つの場所でテストを更新する必要があるのは煩わしいだけでなく、2 つのクラスが同じようにテストされる保証がないことも意味します。
テストケースを「テンプレート化」する方法はありますか? そうでない場合、これをどのように解決しますか?これまでに考えられるのは次のようなものだけです(疑似コードを許してください):
template<class T>
void runTests()
{
T t;
//do tests here
}
BOOST_AUTO_TEST_CASE(test_X)
{
runTests<X>();
}
BOOST_AUTO_TEST_CASE(test_Y)
{
runTests<Y>();
}
しかし、これがうまくいくかどうかさえわかりません。