"Catch" -Tests nach Label filtern, wenn "ctest" ausgeführt wird

779
Kyle Strand

Ich verwende derzeit ctestTests, die mit dem Catch-Framework geschrieben wurden . Ich möchte in der Lage sein zu filtern, welche Tests ich basierend auf den internen Catch-Tags durchführe. Zum Beispiel möchte ich einfach verhindern, dass markierte Tests [FUTURE]ausgeführt werden.

Für ein einzelnes Testprogramm, das ignoriert wird ctest, ist dies unkompliziert:

myTestName '~[FUTURE]' 

Ich sehe jedoch keine Möglichkeit, das '~[FUTURE]'Argument über die Catch-Tests zu übergeben ctest. Dies sollte möglich sein --test-command, aber (1) --test-commandscheint nichts zu tun ohne --build-and-test(was ich nicht will) und (2) dies funktioniert anscheinend nur für einen Test gleichzeitig, was auch nicht das ist, was ich will (ich ctestIch möchte nur mein gesamtes Projekt ausführen .

Ich könnte einfach nur ctest -Ndie Namen der Tests abrufen und dann die Tests selbst ausführen, aber ich kenne keinen Weg, um den Testdateipfad abzurufen, ctestalso müsste ich findalle Testnamen ausführen und An diesem Punkt implementiere ich im Wesentlichen meinen eigenen Testläufer.

PS Es gibt keine vorhandenen Tags für ctestoder das Catch-Test-Framework, und ich habe keine Vertretung, um sie zu erstellen. Ich bin mir nicht sicher, welche anderen Tags hier gelten würden. Ich verwende das cmakeTag nur, weil ctestes Teil von ist cmake.

3
Hast du das jemals herausgefunden? jorgeh vor 9 Jahren 1
@jorgeh Nein, habe ich nicht. Es scheint eine ziemlich krasse Unterlassung in `ctest` zu sein ... Kyle Strand vor 9 Jahren 1
Ich brauche so etwas wie dieses, also hier meine aktuelle vage Idee: Sie könnten jeden Test zweimal für ctest erklären, einmal mit "~ [FUTURE]" als mein-test-name und einmal ohne als mein-test-name-future. Dann könnten Sie sie mit einem ctest-Regex filtern. Alternativ können Sie den zukünftigen Labels ein ctest-Label hinzufügen und die Label-Filterung von ctest verwenden, um die richtigen auszuführen (möglicherweise etwas robuster als das Ausblenden des Namens). Sie können eine Cmake-Wrapper-Funktion für die Testregistrierung verwenden, um sicherzustellen, dass dies konsistent durchgeführt wird. dshepherd vor 7 Jahren 0

0 Antworten auf die Frage