Используя компоненты WPF в тестах NUnit - как использовать STA?

Я должен использовать некоторые компоненты WPF в модульном тесте NUnit. Я запускаю тест через ReSharper, и он перестал работать со следующей ошибкой при использовании объекта WPF:

Система. InvalidOperationException:

Вызывающим потоком должен быть STA, потому что много компонентов UI требуют этого.

Я читал об этой проблеме, и она кажется, что потоком должен быть STA, но я не выяснил, как сделать это все же. То, что инициировало проблему, является следующим кодом:

[Test]
public void MyTest()
{
    var textBox = new TextBox(); 
    textBox.Text = "Some text"; // <-- This causes the exception.
}

43
задан Community 23 May 2017 в 10:31
поделиться

1 ответ

Вы пробовали это?


... просто создайте файл 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> 
0
ответ дан 26 November 2019 в 22:37
поделиться
Другие вопросы по тегам:

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