Задать вопрос
@Vladlen234
Wpf и asp .Net Core - топ

При тестировании вылетает InvalidOperationException, почему исключения вылетает только при тестировании?

При тестировании с помощью msTests вылетает System.InvalidOperationException: Вызывающим потоком должен быть STA, поскольку этого требуют большинство компонентов UI. Но сам проект работает и не выбрасывает некоких исключений.
6373a779175bd284988252.png

везде пишут, что надо использывать Application.Current.Dispatcher.Invoke(() => код); или
Application.Current.Dispatcher.BeginInvoke((Action)(() => код)); Но это не работает. Как я понимаю UI элементы можно вызвать только в главном потоке и из-за этого это исключение. Но почему тогда код работает, если и тесты выдают исключения, и методы связанные с созданием UI покрыты async await?
  • Вопрос задан
  • 613 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
Причина очевидна - в тестах нет STAThread, вот и не работает ни просто так, ни через Dispatcher.
Если ты используешь NUnit, то можешь поставить атрибут [Apartment(ApartmentState.STA)]
Если используешь xUnit, то [STAFact] или [STATheory]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы