Подтвердить что ты не робот

Игнорировать IgnoreAttribute

У нас есть тесты MSTest, которые автоматически запускаются почасово. Один из этих тестов отмечен атрибутом [Ignore], поскольку он еще не готов запустить его в нашей производственной среде.
Теперь я хочу начать этот тест (только) в своей локальной среде, потому что моя локальная среда готова для этого теста.
Я пытаюсь запустить этот тест, щелкнув значок ReSharper в левой части тестового кода или нажав кнопку "Выполнить выбранные тесты" в окне Unit Test Sessions, и ничего не происходит.

Я исправлю это, комментируя строку [Ignore]. Но теперь мне нужно знать, чтобы удалить символы комментария (//) перед проверкой кода.

Есть ли другой способ временного запуска теста [Ignore] 'd?

4b9b3361

Ответ 1

Недавно, когда я столкнулся с такими проблемами, я добавлю новую Конфигурация сборки в проект визуальной студии с именем "Local Developer Debug" и воспользуюсь настройки из существующей конфигурации отладки. Затем я перехожу к "Project → MyProjectName Properties → Build", убедитесь, что "Local Developer Debug" - это выбранная конфигурация и добавьте "LOCALDEVBUILD" в "Символы условного обозначения". Это позволяет использовать директивы препроцессора для переключения кодов во время компиляции:

#if (!LOCALDEVBUILD)
    [Ignore]
#endif

Не уверен, что это то, что вы ищете... но он позволяет вам запускать/использовать определенный код в зависимости от намерений сборки (через конфигурацию сборки)... С помощью этого метода вы можете оставить тест игнорируется для более "официальных" сборок, но все равно выполняйте его на досуге, если вы этого желаете.

Ответ 2

Вы также можете использовать категорию , чтобы отметить методы тестирования, которые вы не хотите включать в свой автоматический тест, например

[TestCategory("IgnoreOnBuild")]

Таким образом, не используется атрибут [Игнорировать]. И объедините это с фильтром в определении сборки, в разделе Basic → Automated Test → Test Source → Test Case Filter:

TestCategory!=IgnoreOnBuild

Ответ 3

Похоже, что есть другие способы включения/отключения тестов с использованием файла testrunconfig. Однако, если вы используете IgnoreAttribute, он скомпилируется с кодом и поэтому не может быть легко переключен.

Из документация:

Атрибут Ignore для unit test находится в исходном файле unit test вместе с другими атрибутами и исходным кодом теста. Это означает, что если вы отключите unit test в окне Test Manager, а затем запустите тест с помощью утилиты командной строки MSTest.exe, тест все еще выполняется. Но если вы отметите unit test атрибутом Ignore, скомпилируйте сборку и затем запустите тест с помощью MSTest.exe, тест не будет запущен. Он не запускается, потому что атрибут Ignore стал частью теста.