Как выполнить модульные тесты в режиме STAThread?

Я хотел бы протестировать приложение, которое использует Буфер обмена (WindowsForms), и мне нужен Буфер обмена в моих модульных тестах также. Для использования его это должно работать в режиме STA, но начиная с NUnit TestFixture не имеет основного метода, я не знаю, где/как аннотировать его.

51
задан BartoszKP 15 January 2018 в 02:37
поделиться

1 ответ

Для NUnit 2.2, 2.4 (см. Простое решение для 2.5 ниже):

Добавьте файл app.config в проект, содержащий ваши модульные тесты, и включите следующее:

<?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>

Вы можете проверить, что потоками квартиры является STA со следующим кодом C #:

if (Thread.CurrentThread.GetApartmentState() != ApartmentState.STA)
{
   throw new ThreadStateException("The current threads apartment state is not STA");
}
33
ответ дан 7 November 2019 в 09:42
поделиться
Другие вопросы по тегам:

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