2016-07-16 6 views
1

Ich arbeite derzeit an einem Projekt, das Autotools verwendet, um ein Makefile zu generieren. Wie üblich unterstützt dieses Makefile make check, um die gesamte Testsuite auszuführen. Ich arbeite jedoch an einem kleinen Teil des Programms, wo nur wenige Unit-Tests gelten. Ist es möglich, unter Verwendung von make check anstelle der gesamten Suite einen einzelnen Komponententest oder eine Auswahl von Komponententests auszuführen?Autotools: Wie führe ich einen einzelnen Test mit make check aus?

Edit: Evan VanderZee suggests, dass es auf die Verzeichnisstruktur abhängt, so lassen Sie mich ein bisschen mehr über die Verzeichnisstruktur erklären. Die Verzeichnisstruktur für dieses Projekt ist ziemlich flach. Die meisten Quelldateien befinden sich im Verzeichnis src/, wobei einige in einem Unterverzeichnis unter src/ gruppiert sind. Die Komponententests sind in src/tests. Keines der Quellverzeichnisse enthält ein Makefile. Es gibt nur ein Makefile (generiert von configure) auf der obersten Ebene.

Antwort

5

Wenn Sie Automake der TESTS Variable verwenden die Tests aufzulisten, die make check läuft, dann ist es eine einfache Abkürzung make check TESTS='name-of-test1 name-of-test2' Die TESTS Variable auf der Befehlszeile übergeben überschreibt die man im Makefile.

Alternativ export TESTS='names-of-tests'; make -e check den Wert TESTS aus der Umgebung zu nehmen. Wenn Sie nicht TESTS, sondern check-local oder ein anderes Ziel verwenden, funktioniert dies nicht.

+0

Das ist, was ich gesucht habe. Dies erlaubt mir, Tests selektiv zu überprüfen, indem ich das übliche Verfahren benutze. Vielen Dank! – palaga

1

Die Antwort darauf hängt von den spezifischen Makefiles ab, die Sie verwenden. Wenn die Tests eine Verzeichnisstruktur aufweisen, können Sie häufig zu einem Unterverzeichnis navigieren und make check im Unterverzeichnis ausführen.

Da Sie später erklärt haben, dass Ihre Verzeichnisstruktur flach ist, ist es schwer zu sagen, ohne etwas vom Makefile zu sehen. Wenn Sie den Namen der ausführbaren Datei kennen, die für den bestimmten Test erstellt wird, den Sie ausführen möchten, können Sie möglicherweise make name_of_test ausführen, um den Test zu erstellen, den Sie ausführen möchten. Dies wird den Test nicht ausführen, es wird nur gebaut. Der Test kann sich nach dem Erstellen im Testverzeichnis befinden. Danach können Sie in das Testverzeichnis gehen und den Test in der üblichen Weise ausführen, in der Sie eine ausführbare Datei ausführen. Wenn der Test jedoch von Bibliotheken abhängt, müssen Sie dem Test möglicherweise mitteilen, wo diese Bibliotheken zu finden sind die LD_LIBRARY_PATH.

Wenn dies häufig gewünscht wird, kann das Makefile möglicherweise so geändert werden, dass es die Ausführung der spezifischen Tests unterstützt, die Sie ausführen möchten. Normalerweise würde dies die Bearbeitung eines Makefile.am oder und die anschließende Neukonfiguration beinhalten, aber ich habe noch nicht genug Informationen, um zu sagen, welche Bearbeitungen Sie vornehmen müssen.

+0

Running 'make', auch ohne irgendein Argument, bauen die modifizierten Tests. Wie du gesagt hast, kann ich die Tests wie normale ausführbare Dateien ausführen. Die Testreihe dauerte einige Zeit, was nicht gerade Spaß macht, wenn Sie nur an einer Handvoll Tests interessiert sind. Diese Lösung ist gut genug für mich. Vielen Dank! – palaga

Verwandte Themen