Я должен использовать некоторые компоненты WPF в модульном тесте NUnit. Я запускаю тест через ReSharper, и он перестал работать со следующей ошибкой при использовании объекта WPF:
Система. InvalidOperationException:
Вызывающим потоком должен быть STA, потому что много компонентов UI требуют этого.
Я читал об этой проблеме, и она кажется, что потоком должен быть STA, но я не выяснил, как сделать это все же. То, что инициировало проблему, является следующим кодом:
[Test]
public void MyTest()
{
var textBox = new TextBox();
textBox.Text = "Some text"; // <-- This causes the exception.
}
Вы пробовали это?
... просто создайте файл app.config для dll, которую вы пытаетесь протестировать, и добавьте некоторые соответствующие параметры NUnit, чтобы заставить NUnit создать тестовое окружение как STA вместо MTA.
Для удобства, вот файл конфигурации, который вам понадобится (или добавьте эти секции в ваш существующий файл конфигурации):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="NUnit">
<section name="TestRunner" type="System.Configuration.NameValueSectionHandler"/>
</sectionGroup>
</configSections>
<NUnit>
<TestRunner>
<add key="ApartmentState" value="STA" />
</TestRunner>
</NUnit>
</configuration>