Задать вопрос
@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?
  • Вопрос задан
  • 792 просмотра
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 1
Причина очевидна - в тестах нет STAThread, вот и не работает ни просто так, ни через Dispatcher.
Если ты используешь NUnit, то можешь поставить атрибут [Apartment(ApartmentState.STA)]
Если используешь xUnit, то [STAFact] или [STATheory]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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