2013-07-05 8 views
0

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

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) в начале каждого теста. Но есть ли другой путь?

+0

Ед. Испытания не должны зависеть от порядка исполнения. Это не ограничение Boost.Test, а принцип модульного тестирования в целом. Чтобы разделить обычные вещи, вы можете захотеть использовать светильники –

+0

Но разве test1 всегда выполняется первым из test2 правильно? –

+0

Я так думаю, но вы не должны полагаться на него. Вы должны написать свои тесты таким образом, чтобы они работали независимо от того, каков порядок выполнения: –

ответ

2

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

Смежные вопросы