У меня есть несколько тестов на задержку (в основном модульные тесты), которые проверяют конкретные API-интерфейсы сервера, и я должен точно знать, сколько времени требуется от запроса на ответ. проблема заключается в том, что перед вызовом теста я должен выполнить некоторую инициализацию данных (для каждого тестового прогона, поэтому, если я выполняю тест на задержку, который выполняется 100 раз, данные также должны быть инициализированы 100 раз), что занимает некоторое время, но Я не хочу считать это.Исключить время инициализации теста в длительности тестового прогона в C#
Существует два способа инициализации данных: [MethodInitialization] и [ClassInitialization].
MethodInitialization - inits данных перед каждым запуском, но когда тест закончен, его продолжительность = время инициализации теста + тестового прогона
ClassInitialization - inits данных только один раз (который не работает для меня), но продолжительность теста = тест run
Я знаю о секундомере, но будет очень больно использовать, поскольку я также получаю данные от AppInsights и хотел бы автоматизировать его как можно больше, и если бы я мог получить четкие результаты после простого запуска, быть просто здорово.
Есть ли способ инициализировать тестовые данные перед каждым испытанием, но исключить его продолжительность?
UPD 1: Я также попытался создать свой пользовательский атрибут, так как есть способ сделать некоторые действия в его конструкторе, но даже когда я запускаю тест 10 раз, конструктор атрибутов вызывается только один раз.
Если целью вашего теста является утверждение о том, что ваши API остаются в пределах определенного порога задержки, я могу думать о таком механизме лучше, чем секундомер, чтобы измерить задержку, после чего вы можете сделать требуемое утверждение. Решение, с которым я столкнулся в http://stackoverflow.com/questions/28334337/is-there-a-way-to-calculate-elapsed-time-for-test-methods-ignoring-time-spent-in, зависит от теста работает в MSTest/VSTest. Это то, что вы используете для запуска тестов? – kbrimington