2016-08-02 6 views
0

Wie benutzt man freie Funktionen für Fixtures (Setup und Teardown) wie hier angedeutet: flexible models? Die Dokumentation zeigt kein Beispiel und die Bibliothekstests verwenden dieses Szenario nicht. Ich suche nach einem Beispiel für eine Testsuite.Boost Unit Test Framework Fixtures mit freien Funktionen

+0

Die Seite verknüpft auch "Hinweise" [wo] (http://www.boost.org/libs/test/doc/html/boost_test/utf_reference/test_org_reference/decorator_fixture.html) Sie können ein komplettes Beispiel für eine finden Testmodul, das diese Modelle verwendet. – llonesmiz

+0

Ja, ich habe dieses Beispiel gesehen (wenn wir über die gleiche Sache sprechen), aber es verwendet die freien Funktionen, um eine Fixture zu konstruieren, die in einem Testfall verwendet wird, nicht in einer Suite. Nach dem Lesen des Quellcodes scheint es jedoch, dass das Gleiche für eine Testsuite funktionieren würde. Nicht sicher, ob es koscher ist, eine Antwort auf meine Frage hinzuzufügen. – Engineerist

+0

Es ist vollkommen in Ordnung (und ermutigt), Ihre eigene Frage zu beantworten, wenn Sie eine Lösung für das Problem gefunden haben, besonders wenn es zukünftigen Lesern helfen kann. – llonesmiz

Antwort

1

FWIW, das funktioniert für mich:

#define BOOST_TEST_MODULE foo 

#include <boost/test/included/unit_test.hpp> 
namespace utf = boost::unit_test; 

void setup() { BOOST_TEST_MESSAGE("set up fun"); } 
void teardown() { BOOST_TEST_MESSAGE("tear down fun"); } 

BOOST_AUTO_TEST_SUITE(bar, *utf::fixture (&setup, &teardown)) 

BOOST_AUTO_TEST_CASE(test1) { 
    BOOST_TEST_MESSAGE("running test1"); 
    BOOST_TEST(true); 
} 

BOOST_AUTO_TEST_CASE(test2) { 
    BOOST_TEST_MESSAGE("running test2"); 
    BOOST_TEST(true); 
} 

BOOST_AUTO_TEST_SUITE_END() 

Running:

$ clang++ -I/usr/local/include test.cpp && ./a.out --log_level=all 
Running 2 test cases... 
Entering test module "foo" 
test.cpp:9: Entering test suite "bar" 
set up fun 
test.cpp:11: Entering test case "test1" 
running test1 
test.cpp:13: info: check true has passed 
test.cpp:11: Leaving test case "test1"; testing time: 56us 
test.cpp:16: Entering test case "test2" 
running test2 
test.cpp:18: info: check true has passed 
test.cpp:16: Leaving test case "test2"; testing time: 36us 
tear down fun 
test.cpp:9: Leaving test suite "bar"; testing time: 148us 
Leaving test module "foo"; testing time: 244us 
... 

Beachten Sie den Aufruf von Setup bevor die Suite ausgeführt wird und der Anruf am Ende Teardown.