Последняя версия Библиотеки тестирования Boost доступна онлайн по адресу http://www.boost.org/libs/test.
Вы можете отправить сообщение об ошибке в список рассылки пользователей и/или заполнить билет здесь https://svn.boost.org/trac/boost/.
Вы можете отправить запрос в список рассылки разработчиков и/или заполнить билет здесь https://svn.boost.org/trac/boost/.
Чтобы создать тестовый пример, используйте макрос
BOOST_AUTO_TEST_CASE
( test_function );
Более подробную информацию см. в документе Unit Test Framework BOOST_AUTO_TEST_CASE
.
Для создания тестового набора используйте макрос
BOOST_AUTO_TEST_SUITE
( suite_name );
Более подробную информацию см. в документе Unit Test Framework BOOST_AUTO_TEST_SUITE
.
Компоненты Boost Test Library предоставляют несколько вариантов использования: для создания тестовой программы можно связать с одним из предварительно составленных вариантов библиотеки или использовать вариант с одним заголовком. Например, для использования Unit Test Framework вы можете использовать
#include <boost/test/unit_test.hpp>
и связываться с
libunit_test_framework.lib
или вы можете включить
#include <boost/test/included/unit_test.hpp>
в этом случае вам не нужно связываться с каким-либо предварительно составленным компонентом. Обратите внимание, что вы должны строго следовать спецификации функции инициализации в другом случае, когда некоторые компиляторы могут привести к такой ошибке.
Unresolved external init_unit_test_suite(int, char**).
Причина этой ошибки заключается в том, что в вашей реализации следует указать второй аргумент init_unit_test_suite
точно так же, как в спецификации, т.е.: char*[]
.
Использовать
unit_test_log::instance().set_log_output( std::ostream & )
Более подробную информацию см. в документации Unit Test Framework Output test stream.
Используйте переменную среды BOOST_TEST_LOG_LEVEL
для определения желаемого уровня трассировки журнала. Вы все равно сможете сбросить это значение из командной строки. Список приемлемых значений см. в документации Unit Test Framework runtime configuration.
Да, начиная с повышения 1,34.0.
Предположим, вы создаете тестовый модуль из одного блока перевода test_file.cpp
. Во-первых, давайте сделаем это, используя вариант использования single-header Unit Test Framework.
Давайте вставим следующий контент в CMakeLists.txt
в том же месте, что и наш тестовый файл test_file.cpp
:
cmake_minimum_required(VERSION 2.8.7)
project(my_first_test)
enable_testing()
# indicates the location of the boost installation tree.
# hard-coded for our simple example.
set(BOOST_INCLUDE_DIRS $boost_installation_prefix/include)
# creates the executable
add_executable(test_executable test_file.cpp)
# indicates the include paths
target_include_directories(test_executable PRIVATE ${BOOST_INCLUDE_DIRS})
# declares a test with our executable
add_test(NAME test1 COMMAND test_executable)
Теперь мы создадим каталог сборки для этого проекта (отдельный каталог), настраиваем и строим проект следующим образом:
> cd $test_path
> mkdir build
> cd build
> cmake ..
> cmake --build .
> ctest

|
мы создаем каталог, посвященный сборке, чтобы избежать загрязнения источников временными файлами сборки |

|
конфигурация проекта |

|
эта команда строит проект, cmake приводит в действие нативный инструмент, настроенный на предыдущей командной строке |

|
выполняет тесты, заявленные в проекте, и печатает отчет |
Если вы используете вариант shared library Unit Test Framework, некоторые изменения должны быть сделаны в вашем CMakeLists.txt.
cmake_minimum_required(VERSION 2.8.11)
project(my_first_test)
enable_testing()
# replace XX with the version you have
set(Boost_ADDITIONAL_VERSIONS "1.XX" "1.XX.0")
# finds boost, triggers an error otherwise
find_package(Boost XX REQUIRED COMPONENTS unit_test_framework)
# creates the executable
add_executable(test_executable test_file.cpp)
# indicates the include paths
target_include_directories(test_executable PRIVATE ${Boost_INCLUDE_DIRS})
# indicates the shared library variant
target_compile_definitions(test_executable PRIVATE "BOOST_TEST_DYN_LINK=1")
# indicates the link paths
target_link_libraries(test_executable ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
# declares a test with our executable
add_test(NAME test1 COMMAND test_executable)
Теперь мы создадим каталог сборки для этого проекта (отдельный каталог), настраиваем и строим проект следующим образом:
> cd $test_path
> mkdir build
> cd build
> cmake -DBOOST_ROOT=$boost_installation_prefix ..
> cmake --build .
> ctest

|
мы создаем каталог, посвященный сборке, чтобы избежать загрязнения источников временными файлами сборки |

|
конфигурация проекта, элемент конфигурации BOOST_ROOT указывает модуль Boost cmake , где найти нашу установку |

|
эта команда строит проект, cmake приводит в действие нативный инструмент, настроенный на предыдущей командной строке |

|
выполняет тесты, заявленные в проекте, и печатает отчет |