Какова цель класса TestExecution в MSTest? - PullRequest
11 голосов
/ 16 декабря 2011

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

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

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

1 Ответ

10 голосов
/ 19 декабря 2011

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

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

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

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

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

...