Не удается захватить утверждение отладки в тесте Google (тест на смерть не удовлетворяет его) - PullRequest
0 голосов
/ 01 марта 2019

Я создаю функцию C ++, подобную следующей:

    int NeedTest(Pointer* b)
    {
        if(b == nullptr)
        {
            _ASSERTE(!"pointer is null.");
            return 0;
        }
        else
       {
           //do something
           return 1;
       }

    }

Теперь я хочу убедиться, что при передаче нулевого указателя в эту функцию она вернет 0 и сработает _ASSERTE.Тем не менее, я несколько раз пытался выполнить тест на смертность для этой функции, похоже, что диалоговое окно подтверждения отладки все еще отображается и завершилось неудачно, так как это утверждение отладки не «смерть», оно только показывает диалоговое окно подтверждения отладки в режиме отладки и когда я нажимаю »игнорировать ", процесс может продолжаться.В этом случае тест на смерть не подходит.

TEST(Mytest,test1)
{
   EXPECT_DEATH(NeedTest(nullptr), "success");

}

Тест Google не пройден, так как он НЕ «умер» и отображается диалоговое окно подтверждения отладки.Есть ли в любом случае в тесте Google, что я могу EXPECT_DEBUG_ASSERTION_HAPPEN и не отображать диалог подтверждения отладки в тесте Google?Я хочу проверить, что мой код содержит _ASSERTE в режиме отладки.Я также попробовал EXPECT_DEATH_IF_SUPPORTED и EXPECT_DEBUG_DEATH, никто из них не может нажать на диалоговое окно и сказать, что тест пройден.

1 Ответ

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

Тесты смерти Googletest не могут подавить диалоги;тестовая программа создаст отдельный процесс для запуска тестового примера и проанализирует, как он существует и что он пишет в stderr.Вместо _ASSERTE вы можете использовать стандарт C ++ assert;в случае неудачи он делает то, что хочет GoogleTest.

...