Как мне точно рассчитать время пробного запуска в visual studio 2010? - PullRequest
5 голосов
/ 19 октября 2011

У меня есть набор модульных тестов для моего проекта, которые я запускаю с помощью тестера Visual Studio Runner.Я хочу знать, сколько времени занимает тестовый прогон.Экран сведений о тестовом прогоне показывает время начала и окончания прогона, но только с точностью до секунды.Мой набор тестов на данный момент занимает менее секунды, поэтому я не могу определить, занимает ли мой набор из 50 тестов <0,1 секунды (хорошо!) Или до 1 секунды (плохо!).</p>

Есть ли способ включить этот уровень точности?

Ответы [ 3 ]

8 голосов
/ 20 октября 2011

В вашем корневом каталоге решений после выполнения теста есть папка с названием «Результаты теста». Если вы посмотрите туда, то каждый прогон выдает файл .TRX с отметкой времени пробного запуска, как часть его имени. Откройте этот файл, и вы увидите, что это файл XML с кучей трудно читаемой информации о выполнении теста. Если вы ищите узлы XML «UnitTestResult», у каждого из них будет атрибут «длительность». Это скажет вам, сколько времени потребовалось для выполнения каждого отдельного теста (при условии, что тест был выполнен).

У меня большой опыт в этом, поскольку я написал утилиту с открытым исходным кодом, которая берет эти файлы TRX, анализирует их и генерирует HTML-отчет о результатах. Одной из вещей, которую он показывает, является продолжительность времени тестирования для отдельных тестов, классов тестов в совокупности и запуска теста в целом.

Чтобы это не получилось как плагин для моего инструмента, я не буду публиковать ссылку, если кому-то не интересно. Но достаточно сказать, что вы можете получить время выполнения теста из файла TRX без трассировки отладки, консоли или редактирования кода теста.

Редактировать: И точность смехотворно высока. Пример записи: 00: 00: 00.0015890 для одиночного модульного теста.

6 голосов
/ 19 октября 2011

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

В общем случае вам необходимо передать выходное сообщение чему-то более полезному (например, регистратору).*

1 голос
/ 19 октября 2011

Вы всегда можете запускать юнит-тесты больше раз, а затем делить общее время на количество выполненных ими тестов.Хотя, по сути, это будет среднее значение, поэтому, если вы ищете низкие или высокие точки, это не лучшая вещь.

...