Ich habe zwei Klassen, die genau die gleiche API und Funktionalität teilen (sie umhüllen verschiedene APIs von Drittanbietern, um die gleiche Funktionalität zu bieten). Die zwei Klassen haben nicht haben eine gemeinsame Basisklasse/Schnittstelle.Wiederholen Sie einen Boost Unit-Test mit verschiedenen Klassen
Ich habe einen Boost-Unit-Test für einen von ihnen und möchte die gleichen genauen Tests auf dem anderen ausführen, aber im Moment weiß ich nur, wie Sie den Test kopieren und einfügen und den Klassennamen finden/ersetzen. Es ist nicht nur ärgerlich, dass Tests an zwei Stellen aktualisiert werden müssen, sondern es gibt auch keine Garantie, dass die beiden Klassen identisch getestet werden.
Gibt es eine Möglichkeit, einen Testfall zu "schablonieren"? Wenn nicht, wie würdest du das lösen? Alles, was ich so weit denken kann, so etwas wie (den Pseudo-Code entschuldigen):
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>();
}
Aber ich weiß nicht einmal, ob dies funktionieren würde.