Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision Next revision | Previous revision | ||
boosttest [2008/04/16 03:11] twroniak |
boosttest [2008/04/16 23:00] (aktualna) twroniak |
||
---|---|---|---|
Linia 1: | Linia 1: | ||
+ | The acceptance test makes the customer satisfied that the\\ | ||
+ | software provides the business value that makes them willing\\ | ||
+ | to pay for it. The unit test makes the programmer satisfied\\ | ||
+ | that the software does what the programmer thinks it does.\\ | ||
+ | |||
===== Opis biblioteki ===== | ===== Opis biblioteki ===== | ||
Linia 110: | Linia 115: | ||
Program execution monitor posiada możliwość konfiguracji przez następujące zmienne środowiskowe: | Program execution monitor posiada możliwość konfiguracji przez następujące zmienne środowiskowe: | ||
- | * BOOST_TEST_CATCH_SYSTEM_ERRORS | + | * BOOST_TEST_CATCH_SYSTEM_ERRORS - pozwala wyłączyć przechwytywanie błędów systemowych, domyślnie ustawiona na "yes" |
- | * BOOST_PRG_MON_CONFIRM | + | * BOOST_PRG_MON_CONFIRM - domyślnie ustawiona na "yes" powoduje wyświetlanie wiadomość potwierdzającą w przypadku pomyślnego zakończenia testów. |
==== Execution monitor ==== | ==== Execution monitor ==== | ||
+ | |||
+ | Execution monitor, czyli monitor wykonywania programu, jest jednym z niskopoziomowych elementów biblioteki Boost.Test, oraz stanowi bazę do implementacji pozostałych narzędzi przez nią oferowanych. Używany jako osobne narzędzie zapewnia monitorowane środowisko wykonywania programu oraz ujednoliconą obsługę błędów. Poniżej zaprezentowano jedną z ciekawszych jego cech, czyli rejestrowanie funkcji obsługujących własne wyjątki programisty. | ||
<code cpp> | <code cpp> | ||
Linia 193: | Linia 200: | ||
====Unit test framework ==== | ====Unit test framework ==== | ||
+ | |||
+ | Unit test framework jest narzędziem oferującym programiście prosty i przystępny sposób na testowanie jego programów. Jest moim zdaniem najprzydatniejszym elementem biblioteki. Umożliwia tworzenie przypadków testowych testujących zarówno niezwiązane funkcje, jak i metody klas. Przypadki testowe (test cases) można grupować w zestawy testowe (test suites) tak, aby np. testy metod jednej klasy były zgrupowane w jednym zestawie.\\ | ||
+ | \\ | ||
+ | |||
+ | Funkcja main nie jest dostarczana przez programistę, robi to za niego unit test framework. Programista musi zdefiniować funkcje o nagłówku boost::unit_test::test_suite* init_unit_test_suite ( int argc, char* argv[] ) | ||
+ | (argc i argv są parametrami wywołania, nie można ich pominąć przy deklaracji, można je zignorować pisząc init_unit_test_suite ( int, char* [] ) ). Zadaniem tej funkcji jest inicjalizacja drzewa testowego, wartością zwracaną powinien być master test suite, czyli zbiór wszystkich przypadków testowych. | ||
<code cpp> | <code cpp> | ||
- | /******************************************************************************* | ||
- | * Tomasz Wroniak G1ISI | ||
- | * Boost.Test | ||
- | * | ||
- | * Biblioteka Boost.Test oferuje programiscie prosty i przystepny sposob na | ||
- | * testowanie jego programow. Umozliwia tworzenie przypadkow testowych (test | ||
- | * cases) i grupowanie ich w zetawy testowe (test suites) | ||
- | * | ||
- | *http://www.boost.org/libs/test for the library home page. | ||
- | ******************************************************************************/ | ||
//naglowek zawierajacy Unit Test Framework | //naglowek zawierajacy Unit Test Framework | ||
Linia 212: | Linia 215: | ||
#include <boost/shared_ptr.hpp> | #include <boost/shared_ptr.hpp> | ||
using namespace boost::unit_test; | using namespace boost::unit_test; | ||
- | |||
- | /******************************************************************************* | ||
- | // funkcja main nie jest dostarczana przez programiste, robi to za niego unit | ||
- | // test framework. Programista musi zdefiniowac funkcje o naglowku | ||
- | // boost::unit_test::test_suite* init_unit_test_suite ( int argc, char* argv[] ) | ||
- | // (argc i argv sa parametrami wywolania, nie mozna ich pominac przy deklaracj, | ||
- | // mozna je zignorowac piszac init_unit_test_suite ( int, char* [] ) ). | ||
- | // Zadaniem tej funkcji jest inicjalizacja drzewa testowego, wartoscia zwracana | ||
- | // powinien byc master test suite, czyli zbior wszystkich przypadkow tesotwych. | ||
- | // w przypadku zwrocenia wartosci NULL testy nie beda wykonane, a program | ||
- | // zakonczy sie zwroceniem boost::exit_test_failure | ||
- | *******************************************************************************/ | ||
/****************************************************************************** | /****************************************************************************** | ||
Linia 332: | Linia 323: | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | Jak łatwo zauważyć biblioteka ta w znacznym stopniu polega na prostych makrach opakowujących szablony. Skutkuje to niestety znacznym wydłużeniem kompilacji, która na słabszych komputerach (takich jak np. komputer autora:) ) może trwać na prawdę długo. Elegancję tak frywolnego użycia tak dużej ilości makr pozostawiam do oceny czytelnikowi. | ||
+ |