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. | ||
| + | |||