Boost.Test как создать тестовую зависимость

Я использую boost.test в качестве набора тестов. Я хочу знать, возможно ли сделать некоторые предварительные условия для теста. Например

uniqut_ptr< MyClass > g_class;

BOOST_AUTO_TEST_CASE( test1 )
{
    BOOST_REQUIRE_NO_THROW( g_class = CreateMyClass() );
}

BOOST_AUTO_TEST_CASE( test2 )
{
    // This test need the test1 as passed
    BOOST_REQUIRE( g_class->doSomething() );
}

В этом случае, если test1 не пройден, программа вылетит в test2. Я знаю, что могу добавить BOOST_REQUIRE( g_class ) в начале каждого теста. Но есть ли другой способ?


person Elvis Dukaj    schedule 05.07.2013    source источник
comment
Модульные тесты не должны зависеть от порядка выполнения. Это не ограничение Boost.Test, а принцип модульного тестирования в целом. Чтобы выделить общие вещи, вы можете использовать приспособления   -  person Andy Prowl    schedule 05.07.2013
comment
Но всегда ли test1 выполняется первым из test2, верно?   -  person Elvis Dukaj    schedule 05.07.2013
comment
Думаю да, но не стоит на это полагаться. Вы должны писать свои тесты таким образом, чтобы они работали независимо от порядка выполнения.   -  person Andy Prowl    schedule 05.07.2013
comment
Если я не вызову его с помощью случайного переключателя, что полезно время от времени пробовать.   -  person doctorlove    schedule 05.07.2013


Ответы (1)


Я вижу повышение REQUIRE для использования, когда вам требуется, чтобы что-то было правдой, поэтому ставьте требование вверху каждого теста. Или рассмотрите возможность использования тестового приспособления и выполните настройку в функции настройки. Примеры есть здесь Похоже, вы пытаетесь использовать глобальную переменную в своем тесте, поэтому они могут взаимодействовать ужасным образом. Глобальные данные доставляют больше хлопот, чем пользы.

person doctorlove    schedule 05.07.2013