Ist es möglich, das Gerät nur einmal zu initialisieren und es in mehreren Testfällen innerhalb derselben Testsuite zu verwenden? Im folgenden Beispiel wird Fixture mehrfach konstruiert und zerstört:
%Vor% Aber ich möchte, dass das Fixture nur einmal erstellt wird, wenn die Testsuite beginnt und von allen Testfällen geteilt wird. Ist es möglich? Der Destruktor würde nach Verlassen der Testsuite aufgerufen werden.
Ich verwende Boost Test Framework, habe aber kein Problem mit anderen Frameworks wie UnitTest ++.
Jeder Testfall wird von der Test-Suite-Fixture abgeleitet, die zu Beginn jedes Testfalls erstellt und beim Abschluss zerstört wird (in Ihrem Fall werden sowohl test_case1
& amp; test_case2
von F
abgeleitet). Das Gerät konfiguriert und bereinigt die Umgebung für jeden einzelnen Testfall.
Für Unit-Tests ist dies normalerweise die bevorzugte Strategie - jeder Testfall ist eigenständig und vollständig atomar.
In einigen Szenarien (z. B. Integrationstests) ist es möglicherweise vorzuziehen, eine teure Ressource einmal zu erwerben und sie über alle Testfälle zu behalten. Dies kann über eine GLOBALE FIXTURE erfolgen, die zu Beginn des Testlaufs erstellt und beim Beenden des Tests zerstört wird.
Wenn Testfälle eine andere Konfiguration / Konfiguration der globalen Ressourcen erfordern, kann GLOBAL FIXTURE nicht verwendet werden und Sie sollten Ihre Teststrategie überdenken, so dass jeder Testfall seine eigene Umgebung konfiguriert und bereinigt.
Leider haben Testfälle keinen direkten Zugriff auf die globale Testvorrichtung, daher müssen Sie einen Mechanismus bereitstellen, der es ihnen ermöglicht, auf die Ressource zuzugreifen (z. B. über eine globale Variable oder Singleton).
Im folgenden Beispiel ist MyFixture
ein Singleton, der die Ressource enthält.
z.B.
Tags und Links unit-testing c++ boost fixtures boost-test