Устранение неполадок в Test Edition
Обновлен: Ноябрь 2007
При тестировании кода некоторые условия создают ошибки и предупреждения или даже вызывают сбой теста. В этом разделе описаны некоторые из этих условий и представлены шаги по их устранению.
Устранение неполадок, связанных с выполнением тестов
В основании причин, препятствующих выполнению теста, как правило, лежит невозможность развернуть файл теста или другие файлы, необходимые для запуска теста.
Удаленные тесты. В случае удаленных тестов причиной сбоя могут также стать проблемы связи. Эти и другие ошибки на уровне теста и тестового запуска описаны в разделе Устранение неполадок, связанных с выполнением тестов.
Модульные тесты ASP.NET. Если модульный тест ASP.NET выполняется в процессе служб IIS, то в целях обеспечения безопасности можно запустить процесс ASP.NET от имени нестандартного пользователя, то есть с другим удостоверением процесса. В этом случае при выполнении теста может произойти сбой. Дополнительные сведения см. в разделе Общие сведения о модульных тестах ASP.NET.
Развертывание файлов вместе с тестами. Ошибки развертывания часто отображаются на странице "Сведения о выполнении тестов", а не на странице "Сведения о результатах теста" отдельного теста, завершившегося неудачей. Поэтому причина сбоя отдельного теста может быть неочевидной. Дополнительные сведения см. в подразделе "Устранение неполадок развертывания тестов" раздела Общие сведения о развертывании тестов.
Устранение неполадок веб-тестов При выполнении веб-тестов могут возникать самые разнообразные ошибки. Они могут быть вызваны отсутствием атрибута привязки данных, проблемами с параметрами безопасности или попыткой получить доступ к веб-узлу за пределами брандмауэра. Дополнительные сведения см. в разделе Устранение неполадок в веб-тестах.
Устранение неполадок нагрузочных тестов. При выполнении нагрузочных тестов могут возникать самые разнообразные ошибки. Они могут быть вызваны проблемами с базой данных нагрузочного теста, набором счетчиков в нагрузочном тесте, неправильно настроенной тестовой платформой или одним из тестов, содержащихся в нагрузочном тесте. Дополнительные сведения см. в разделе Устранение неполадок нагрузочных тестов.
Устранение неполадок модульных тестов, управляемых данными. При выполнении модульных тестов, управляемых данными, можно столкнуться с проблемами связи, проверки подлинности, развертывания и другими проблемами. Для устранения этих проблем используйте сведения раздела Устранение неполадок модульных тестов, управляемых данными.
Повторное подписание сборок со строгими именами
При выполнении модульных тестов выполняется тестирование двоичного файла, созданного на основе исходного кода. Если эти тесты выполняются посредством инструментирования двоичного файла, можно собирать сведения о покрытии кода; см. раздел Практическое руководство. Получение данных о покрытии кода. В процессе инструментирования в двоичный файл добавляется код, который создает сведения о покрытии кода.
Если тестируемый двоичный файл является сборкой со строгим именем, то в результате изменения кода, произведенного при инструментировании, подпись сборки становится недействительной. Поэтому Visual Studio автоматически пытается повторно подписать сборку непосредственно после завершения этапа инструментирования. Дополнительные сведения о сборках со строгими именами см. в разделе Сборки со строгими именами.
Сбой повторного подписания может быть вызван различными условиями. Сведения об устранении этих условий см. в разделе Инструментирование и повторная подпись сборок.
Данные о покрытии кода и средство VSPerfMon.exe
Если средство VSPerfMon.exe выполняется одновременно с тестами, в которых собираются данные о покрытии кода, могут происходить перечисленные ниже события.
Если средство VSPerfMon запускается с параметром TRACE или SAMPLE, возникает сбой параллельно выполняемого теста и сведения об ошибке отображаются на странице "Сведения о выполнении тестов".
Если средство VSPerfMon.exe запускается с параметром COVERAGE, процесс VSPerfMon.exe останавливается.
В обоих случаях единственным способом устранения ошибок является отказ от параллельного выполнения средства VSPerfMon.exe и тестов, в которых собираются данные о покрытии кода. Дополнительные сведения о средстве VSPerfMon.exe см. в разделе VSPerfMon.
Причины возникновения таких ситуаций
Ниже перечислены наиболее распространенные случаи запуска средства VSPerfMon.
Запущен сеанс профилирования, возможно, в экземпляре Visual Studio, отличном от экземпляра, в котором выполняются тесты.
Сбор данных о покрытии кода или данных профилирования осуществляется непосредственно с помощью средства VSPerfMon.exe или, что более распространено, посредством программы-оболочки VSPerfCmd.exe.
Неправильно отображаются данные о покрытии кода
Если тесты настроены для сбора данных о покрытии кода, однако эти данные не отображаются или содержат непредвиденные результаты, могла возникнуть одна из перечисленных ниже ситуаций.
Данные о покрытии кода не отображаются. Во время выполнения теста некоторые двоичные файлы, например DLL-библиотеки COM, загружаются из своих исходных расположений, а не из каталога развертывания теста. Инструментирование таких двоичных файлов должно выполняться на месте; в противном случае данные о покрытии кода не собираются, хотя тест успешно выполняется и никаких предупреждений на уровне запуска не создается. Дополнительные сведения см. в разделе Выбор папки для инструментирования.
Не отображается выделение покрытия кода. Если тесты выполнены и данные о покрытии кода собраны, то при просмотре результатов теста Visual Studio указывает код, протестированный в тестовом запуске, посредством его выделения в файле исходного кода. Можно выбрать цвета для обозначения охваченного, не охваченного и частично охваченного кода. Если часть этого выделения или все выделение не отображается, убедитесь, что выбранные цвета отличаются от цвета фона файла исходного кода. Дополнительные сведения о выборе цветов для выделения см. в подразделе "Изменение отображения данные о покрытии кода" раздела Практическое руководство. Получение данных о покрытии кода.
Неправильно выполняется объединение данных о покрытии кода. Результаты одного или нескольких тестовых запусков ASP.NET объединены, однако в окне "Результаты покрытия кода" данные ASP.NET отображаются в разделе "Объединенные результаты" не в одном объединенном узле, а в различных узлах. Дополнительные сведения см. в разделе Работа с объединенными данными о покрытии кода.
Отображаются не все объединенные данные о покрытии кода. После объединения данных о покрытии кода их можно экспортировать на диск в виде XML-файла. Если затем импортировать этот файл и добавить в него дополнительные данные, то статистика отображается не полностью. Дополнительные сведения см. в разделе Работа с объединенными данными о покрытии кода.
Не удается импортировать данные о покрытии кода. Для импорта данных о покрытии кода среде Visual Studio требуется найти некоторые файлы на диске. Дополнительные сведения см. в разделе Работа с объединенными данными о покрытии кода.
Инструментированные двоичные файлы перезаписываются. Предпринимается попытка сбора данных о покрытии кода из программы, которая выполняется во время ручного теста. Если для запуска программы используется сочетание клавиш CTRL+F5, это приводит к перестроению двоичного файла программы. В результате происходит перезапись инструментированного двоичного файла, и данные о покрытии кода не собираются.
Общие сведения о сборе данных о покрытии кода см. в разделе Практическое руководство. Получение данных о покрытии кода.
Снижение производительности при добавлении методов тестов
При добавлении нового метода теста выполняются фоновые задачи, осуществляющие добавление этого метода в окно представления теста и в редактор списка тестов. Поэтому их можно сразу же увидеть. Если в одном тестовом классе или в целом проекте содержится множество методов тестов, может произойти снижение производительности, вызванное автоматической обработкой при добавлении нового метода теста в тестовый класс.
При снижении производительности существуют три возможных решения.
Можно разбить тестовый класс на разделяемые классы и распределить методы теста между разделяемыми классами. Это позволяет сократить количество методов в одном тестовом классе и повысить производительность при добавлении метода теста.
Можно создать новый тестовый проект, переместить в него некоторые тестовые классы, после чего удалить их из первоначального тестового проекта. Это позволяет сократить количество методов тестов в одной сборке и повысить производительность.
Можно отключить фоновые задачи, осуществляющие добавление методов тестов в окно представления теста и в редактор списка тестов. Это позволяет повысить производительность при добавлении метода теста. Однако в этом случае метод теста будет отображен в окне представления теста и в редакторе списка тестов только после компиляции класса, содержащего метод теста, и последующего нажатия кнопки "Обновить" в окне представления теста или в редакторе списка тестов.
Примечание. При использовании этого параметра обнаружение новых методов тестов будет происходить во время компиляции. Это увеличит общее время компиляции решения.
Отключение автоматического обнаружения методов тестов
В меню Сервис выберите пункт Параметры.
Откроется диалоговое окно Параметры.
Разверните узел Инструменты тестирования в левой области и щелкните пункт Тестовый проект.
Чтобы отключить автоматическое обнаружение методов тестов, установите флажок Отключить фоновое обнаружение методов тестов.
Примечание. В этом случае все методы тестов, добавленные в любой тестовый класс, будут отображаться в окне представления теста и в редакторе списка тестов только после компиляции класса, содержащего метод теста.
См. также
Задачи
Практическое руководство. Объединение данных об объеме покрытия кода
Устранение неполадок в веб-тестах
Устранение неполадок нагрузочных тестов
Основные понятия
Общие сведения о развертывании тестов
Работа с объединенными данными о покрытии кода