Visual Studio — VSTest.console Фильтровать нативные модульные тесты c ++ по атрибутам

Я в настоящее время сталкиваюсь со следующей проблемой:

Мы ввели модульные тесты в наше родное приложение на языке c ++ с помощью встроенной среды модульных тестов Microsoft, включенной в Visual Studio 2015 Microsoft::VisualStudio::CppUnitTestFramework,

Для запуска модульных тестов в Visual Studio мы используем Test-Explorer как видно на рисунке 1. Добавив method attribute к Test-Method (как показано на рисунке 2) Test-Explorer позволяет сортировать и фильтровать по атрибуту (как видно на рисунке 3).

введите описание изображения здесь

Все это работает без проблем. У нас возникла проблема, когда мы попытались внедрить эти модульные тесты в нашу систему непрерывной интеграции (CI).

Для запуска юнит-тестов с консоли мы используем vstest.console.exe, который находится в: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe, Официальную документацию можно найти Вот.

На следующем снимке экрана показано, как успешно проходят тесты при использовании консоли:
введите описание изображения здесь

Добавление логгера и вывод файлов в .trx тоже хорошо работает. Что значит НЕ Однако работа заключается в применении фильтра для определения тестов с конкретными атрибутами. Согласно документации, что-то подобное должно быть возможно с помощью /TestCaseFilter:-переход. Следующий скриншот показывает полученную ошибку:

введите описание изображения здесь

Это переводится как: «Ни один тест не соответствует фильтру, поскольку он содержит одно или несколько недопустимых свойств (TakesLong). Укажите выражение фильтра, содержащее допустимые свойства (TestCategory, Priority, FullyQualifiedName, Name) и повторите попытку».

Кто-нибудь знает эту проблему или есть идеи, как ее исправить? Конечная цель состоит в том, чтобы иметь возможность исключить определенные тесты (очень долго / нужен аппаратный ключ и т. Д.).

С наилучшими пожеланиями, LorToso

3

Решение

Я тоже столкнулся с этой проблемой, и, к сожалению, похоже, что нам просто не повезло. vstest.console.exe поддерживает только ограниченное количество фильтров для C ++ и C #.

Подход, к которому я собираюсь перейти, состоит в том, чтобы разделить тесты на разные модули, чтобы я мог запускать модульные тесты для ночных сборок и сборок CI, а также интеграционные тесты (например, для базы данных) только для релизов.

Кроме того, вы можете разделить их по пространству имен в том же модуле и использовать фильтр FullyQualifiedName. К сожалению, условия ‘! ~’ Также нет, поэтому вам, возможно, придется как-то обойти это.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]