2017-02-05 16 views
1

Я пытаюсь настроить тестирование для моего проекта, у меня есть исключения, и я определил свои утверждения для вызова std :: abort. Как gtest, так и Catch могут терпеть неудачу только на одном тесте, который вызывает std :: abort, поскольку он убивает весь набор тестов.
Мои проекты скомпилированы в DLL, которые ссылаются на проект/исполняемый файл. Помимо:Набор для тестирования C++, который выживает в коде

  1. позволяет исключения и с моей утверждает бросить
  2. создать собственную цель компиляции и делать что-то подобное, как к коду 1.
  3. реструктуризации не полагаться на утверждают на провал

есть ли у меня какие-либо другие варианты? Я бы предпочел не включать исключения из-за проблем с дизайном/скоростью.

+0

googletest поддерживает это. Поиск смертельных испытаний. –

+0

Тест на смерть, который приложение прерывает. Как я структурирую код, который он прервет в любое время, есть неустранимая ошибка, которая может произойти практически в любое время. – Vitali

+0

Это, наверное, не очень хороший дизайн. –

ответ

0

Есть действительно два вопроса:

1. Can I do testing without exceptions? 

Да, вы можете. Если std::abort не дает вам достаточно информации, вы можете попробовать возвращение коды ошибок не используя std::quick_exit

2. Can I keep the test suite going after a failure? 

Это действительно имеет ничего общего с прежним. Хранение набора тестов после некоторой ошибки - это технический вызов, так как программа может пропустить тест на ужасные неустранимые причины, такие как деление на ноль или стек, возможно, были разбиты.

Единственный способ сохранить запуск набора тестов - это если тесты выполняются в отдельных процессах.

В одном из моих проектов у меня есть флаг переключателя в main, который заставляет программу запускаться в тестовом режиме, который затем направляется на конкретный тест. Затем скрипт bash выполняет более 100 таких тестов.