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

Очень длинная задержка при запуске С# unit test в VS2015

У меня очень длинная задержка (около 1 минуты! еще больше) при запуске unit test в VS2015. При запуске даже одного теста я вижу индикатор выполнения в верхней части "Test Explorer", он протекает около минуты, а затем я получаю результат теста. Сообщаемое тестовое время работы как ожидалось - очень мало, несколько миллисекунд.

Мой вопрос: как я могу его отладить? Как я могу увидеть, что происходит в эту минуту, прежде чем тест начнет работать?

4b9b3361

Ответ 1

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

Если вы посмотрите в окне вывода тестов, вы получите лучшее представление о том, что происходит на самом деле, и о фактическом времени, затрачиваемом на выполнение тестов. Например, по моему, запуск одного теста показывает аналогичные накладные расходы для выполнения 49 тестов.

========== Запуск теста завершен: 1 прогон (0: 00: 01.0416253) ==========

========== Запуск теста завершен: 49 run (0: 00: 01.9156121) ==========

Существуют различные вещи, которые могут замедлить загрузку сборки, например статические конструкторы. Я хотел бы начать с создания нового тестового проекта без каких-либо зависимостей, чтобы убедиться, что он не имеет такой же проблемы с длительной задержкой, чтобы вы знали его не только на своей машине. Затем я добавил бы в зависимости от существующего тестового проекта, по одной зависимости за раз, чтобы добавить, добавляет ли определенная зависимость триггеры задержки... Тогда я бы посмотрел на этот проект, чтобы увидеть, что-нибудь происходит, например, статическое конструкторы, которые пытаются подключиться к базе данных/установить сетевые подключения.

Возможно, стоит попробовать отладить ваши тесты, но убедитесь, что у вас есть Break When Exceptions включены (если это что-то вроде неудачного подключения к базе данных, что приводит к замедлению там, есть хорошая вероятность исключения может быть брошен как часть этого процесса).