Страницы

Поиск по вопросам

пятница, 13 марта 2020 г.

Обработчик проваленного теста

#cpp #юнит_тесты


Производится юнит-тестирование usb-устройства (CDC). Тест открывает устройство, формирует
запрос, отправляет его устройству, проверяет ответ, закрывает устройство. В случае,
если тест провален, закрытие устройства не выполнится, и, следовательно, все последующие
тесты также будут провалены, так как не смогут открыть устройство. В связи с этим вопрос:
есть ли способ установить обработчик (handler, hook) проваленного теста, который бы
выполнял освобождение ресурсов, запрошенных тестирующей функцией?

Тесты создаются в Visual Studio, тип проекта c++ unit test.
    


Ответы

Ответ 1



В тестовых фреймворках всегда есть возможность указать код, который будет выполнять перед каждым тестом и после каждого теста. Этот код выполняется всегда, вне зависимости от результата теста. Соответственно в вашем сценарии можно сделать так: Код перед тестом открывает устройство. Выполняется тест. Код после теста закрывает устройство. В MSTest для этого используются атрибуты TestInitialize и TestCleanup. P.S. Только это у вас не юнит-тестирование, а интеграционное тестирование. В юнит-тестировании не используются сторонние зависимости.

Ответ 2



Ваши ответы подсказали мне, в какой области искать верный ответ. В Visual Studio в Native Unit test методы до и после тестирования объявляются следующим образом: TEST_METHOD_INITIALIZE(methodName) { // method initialization code } TEST_METHOD_CLEANUP(methodName) { // test method cleanup code } Внутри этих методов можно генерировать исключения и вызывать функции из статического класса Assert. Больше информации здесь: MSDN

Комментариев нет:

Отправить комментарий