Можно ли профилировать использование памяти модульных тестов?
Я смотрю на создание некоторых модульных тестов, чтобы убедиться, что ресурсы протекают (или нет), используя среду модульного тестирования, которая поставляется с Visual Studio.
В настоящее время я оцениваю последнюю версию ANTS Profiler, но не могу разобраться, позволяет ли мне принудительно сделать снимок из кода (чтобы я мог сделать снимок, запустить модульный тест несколько сотен раз, вызвать сборку мусора, сделать еще один снимок и сохранить результаты для последующего анализа).
Возможно ли это сделать с помощью ANTS/Visual Studio или мне нужно изучить варианты с другими профилировщиками?
4 ответа
JetBrains dotTrace/dotMemory и ReSharper лучше интегрированы в модульное тестирование и профилирование.
http://www.jetbrains.com/profiler/index.html
Не уверен, что ANTS имеет такую интеграцию, но вы можете проконсультироваться с предпродажами Red Gate, верно?
http://www.red-gate.com/about/all_testimonials.htm
Они ожидают, что вы позвоните им для получения дополнительной информации.
Вы видели dotmemory от JetBrains?
dotMemory Unit - это инфраструктура модульного тестирования, которая позволяет вам писать тесты, которые проверяют ваш код на наличие проблем с памятью.
Например:
Когда вам нужно просто оценить объем памяти, выделенный в тесте, вы можете использовать атрибут AssertTraffic. Этот гибкий атрибут позволяет фильтровать данные трафика по типу объекта, интерфейсу или пространству имен.
Я использую профилировщик ANTS, и я считаю, что наиболее удобным для него является подключение профилировщика к выполняющемуся процессу тестирования, который может отличаться в зависимости от используемой платформы тестирования. Например, я использую Resharper, а имя образа процесса называется примерно так:
JetBrains.ReSharper.TaskRunner.CLR...
Для будущих читателей стоит упомянуть, что вы можете принудительно делать снимки из своего кода с помощью ANTS Memory Profiler. Вам нужно ссылку
RedGate.MemoryProfiler.Snapshot.dll
который включен в каталог установки ANTS. Затем вы можете сделать снимок, позвонив
RedGate.MemoryProfiler.Snapshot.TakeSnapshot("Необязательное имя снимка")