2009-08-10 4 views
4

У меня есть некоторые тестовые примеры NUnit, которые нужно запускать под моделью STA.Проблема с runnig тестов NUnit под STA

Как обсуждалось на многих веб-сайтах или блогах (например, here), я добавил файл конфигурации («app.conig») в свою тестовую сборку NUnit со следующим содержимым.

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

Чтобы проверить, если тест действительно бежал под ГЕН я ставлю этот тестовый пример:

[Test] 
public void CheckSTA() 
{ 
    ApartmentState aptState = Thread.CurrentThread.GetApartmentState(); 

    Assert.IsTrue(aptState == ApartmentState.STA); 
} 

Это отлично работает, если я запускаю мое модульное тестирование на NUnit консоли или на NUnit GUI без использования файл проекта NUnit.

Однако, как только я загружаю единичный тест в графический интерфейс NUnit через файл проекта NUnit (.nunit), модульный тест начинает сбой.

Я пробовал использовать другое имя файла конфигурации, следуя тому, что написано в этом блоге (Here), но используя любое имя файла конфигурации, отличное от «app.config», приводит к отказу моего модульного теста при любых обстоятельствах.

Было сказано, что это правильный способ установить это, чтобы мой модульный тест проходил под STA независимо от того, что?

ответ

10

Начиная с NUnit 2.5, вы можете использовать RequiresSTAAttribute.

+0

Просьба найти документацию и образец кода на странице http://www.nunit.org/index.php?p=requiresSTA&r=2.5 – GregC

+0

Самый простой способ - просто добавить атрибут [assembly: RequiresSTA] в AssemblyInfo. CS. Как вы это делали, я обнаружил, что проекты NUnit игнорируют настройки STA App.config (хотя Resharper и Visual Studio соблюдали бы это). Применение атрибута сборки - хорошее решение для быстрого и безошибочного решения! –

+0

Бонусные баллы, если вы обновите ответ, чтобы включить NUnit 3.0 ['[Apartment (ApartmentState.STA)]'] (https://github.com/nunit/docs/wiki/Apartment-Attribute). – jnm2

0

Комментарии часто упускается из виду и потому jnm2 дал важный намек ... и, очевидно, я могу заработать бонусные очки, если добавить комментарий как дополнительный ответ здесь ... ;-)

Для NUnit 3.x[Apartment(ApartmentState.STA)]

ps дополнительный бонус: я установил ссылку на документацию.

Смежные вопросы