Защита тестов от выхода/смертиC++

Программы на C++. Форум разработчиков
Anonymous
Защита тестов от выхода/смерти

Сообщение Anonymous »

Я использую googletest для тестирования многопоточного кода с помощью std::thread. В неработающем коде часто случается, что std::thread уничтожается до присоединения потока, что приводит к завершению программы. К сожалению, среда тестирования не улавливает этот случай и поэтому останавливает выполнение. Тестовый пример не помечен как неудачный.
Например:

Код: Выделить всё

#include 
using namespace std::literals::chrono_literals;

TEST( ThreadDeathTest, death )
{
std::thread t([] {
std::this_thread::sleep_for(2s);
});
// exiting scope destroys thread, causing terminate()
}
Вывод:

Код: Выделить всё

$ctmltest --gtest_filter=ThreadDeathTest.death
Note: Google Test filter = ThreadDeathTest.death
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from ThreadDeathTest
[ RUN      ] ThreadDeathTest.death

$
Я читал об тестах на смерть, но не думаю, что это применимо к моему случаю: я не ожидаю смерти во всех моих тестах.< /p>
Есть ли способ сообщить googletest, что нужно следить за завершением работы, как это происходит с тестами на смерть?


Подробнее здесь: https://stackoverflow.com/questions/787 ... exit-death

Вернуться в «C++»