4

Есть ли какой-либо механизм, обеспечивающий CancellationToken (или, возможно, атрибут типа [TestInitialize]) для модульного теста, который может использоваться для понимания того, что модульный тест отменен? Я не мог найти.Механизм отмены MSTest

ответ

1

Теоретически это должно быть возможно с помощью собственного тестового расширения (полученного от TestClassExtensionAttribute), которое вы использовали бы вместо стандартного атрибута [TestClass].

Это немного сложно, так как требует развертывания/регистрации вашего тестового расширения (см. "Extending the Visual Studio Unit Test Type, part 1").

Это даст вам доступ к мероприятию TestExecution.OnTestStopping. В обработчике событий вы можете запросить отмену в определенном экземпляре CancellationTokenSource.

Это зависит от вас, как вы можете сделать CancellationTokenSource.Token доступным самому методу тестирования. Например, вы можете использовать System.AppDomain.CurrentDomain.GetData. В этом случае вам также необходимо будет обрабатывать TestExecution.BeforeTestInitialize и использовать System.AppDomain.CurrentDomain.SetData для хранения информации, необходимой для правильного поиска CancellationTokenSource. Вам, вероятно, нужно будет создать словарь TestContext -to- CancellationTokenSource, чтобы убедиться, что вы отменили правильный тест.

Смежные вопросы