#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
Комментариев нет:
Отправить комментарий