Как правильно вызвать Assert :: ExpectException? - PullRequest
0 голосов
/ 19 января 2019

Я пишу некоторые модульные тесты, используя CppUnitTestFramework от Microsoft.

Я хочу проверить, вызывает ли вызываемый мной метод правильное исключение. Мой код:

TEST_METHOD(test_for_correct_exception_by_input_with_whitespaces)
{
            std::string input{ "meet me at the corner" };
            Assert::ExpectException<std::invalid_argument>(AutokeyCipher::encrypt(input, primer));              
}

В ссылке ниже я написал звонок, похожий на последний ответ:

Функциональные указатели в C ++ / CX

При компиляции я получаю C2064 Ошибка: термин не оценивает функцию, принимающую 0 аргументов

Почему это не работает?

1 Ответ

0 голосов
/ 24 марта 2019

Вам нужно обернуть тестируемый код в лямбда-выражение, которое будет вызываться функцией Assert::ExpectException.

void Foo()
{
    throw std::invalid_argument("test");
}

TEST_METHOD(Foo_ThrowsException)
{
    auto func = [] { Foo(); };
    Assert::ExpectException<std::invalid_argument>(func);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...