Какова цель класса TestExecution в MSTest?

Я нашел класс TestExecution, который предоставляет кучу событий, которые были бы невероятно полезными. Однако я не могу найти ссылку на него, кроме документации MSDN, и в документации не указаны какие-либо намеки относительно того, как она используется, или как я могу получить ссылку на экземпляр во время тестового прогона.

Поиск в .NET Reflector тоже не помог - TestExecution реализуется одним другим классом UnitTestExecution, который является внутренним. Я не мог найти никаких ссылок на любой класс во всех библиотеках Microsoft.VisualStudio.QualityTools. *, Ни в форме дальнейших реализаций, ни в качестве типов свойств в каких-либо других классах.

Как я могу получить доступ к этим событиям?

Ответ 1

Экземпляр TestExecution предоставляется вам при реализации пользовательского TestExtensionExecution. Он предоставляет метод Initialize, который вы можете переопределить для подписки на тестовые события.

Обычно это часть реализации пользовательского тестового атрибута в MSTest.

Edit Чтобы создать собственное тестовое расширение, начните с создания нового атрибута, полученного из Microsoft.VisualStudio.TestTools.UnitTesting.TestClassExtensionAttribute, который является абстрактным классом, требующим предоставить TestExtensionExecution с помощью метода GetExtension().

Примените свой атрибут к одному из ваших методов тестирования и вы сможете подписаться на эти события во время теста (внутри реализации TestExtensionExecution, возвращаемой атрибутом)

Обратите внимание, что вам также необходимо реализовать ITestMethodInvoker, который вы должны создать из свойства TetMethodInvokerContext.TestMethodInfo, предоставленного методу TestExtensionExecute.CreateTestMethodInvoker.