EXPECTED_FAILURES
относится к сбоям против BOOST_REQUIRE
или другим утверждениям. В документации четко указано:
Эта функция не предназначена для проверки возможных сбоев функций. Чтобы проверить, что определенный ввод вызывает исключение , используйте BOOST_CHECK_THROW семейство инструментов тестирования.
Акцент был мой.
Ожидаемые сбои предназначены для использования в качестве временного обходного пути во время тестирования, когда утверждение не выполняется, но вы хотите временно его игнорировать.
Взяв фрагмент из их ожидаемых сбоев, спецификация :
BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( my_test1, 1 )
BOOST_AUTO_TEST_CASE( my_test1 )
{
BOOST_CHECK( 2 == 1 );
}
приведет к выводу
test.cpp(10): error in "my_test1": check 2 == 1 failed
Test suite "example" passed with:
1 assertions out of 1 failed
1 failures expected
1 test case out of 1 passed
Как видите, несмотря на неудачные утверждения, контрольный пример все же прошел из-за использования ожидаемых сбоев.
Так что, если вам нужно убедиться, что что-то вызывает исключение, используйте код, подобный следующему:
BOOST_AUTO_TEST_CASE(invalid_operation_should_throw_custom_exception)
{
MyObj obj;
BOOST_REQUIRE_THROW(obj.invalid_operation(), CustomException);
}