Como executar testes de unidade no modo STAThread?

Eu gostaria de testar um aplicativo que usa a área de transferência (WindowsForms) e eu preciso da área de transferência em meus testes de unidade também. Para usá-lo, ele deve ser executado no modo STA, mas como o NUnit TestFixture não possui um método main, não sei onde / como anotá-lo.

    Para NUnit 2.2, 2.4 (Veja a solução simples abaixo para 2.5):

    Adicione um arquivo app.config ao projeto que contém seus testes de unidade e inclua o seguinte:

     < ?xml version="1.0" encoding="utf-8" ?>    

    Você pode verificar se o segmento do apartamento é STA com o seguinte código C #:

     if (Thread.CurrentThread.GetApartmentState() != ApartmentState.STA) { throw new ThreadStateException("The current threads apartment state is not STA"); } 

    Se você estiver usando o nunit 2.5+, você pode usar o novo The RequiresSTAAttribute na class

     [TestFixture, RequiresSTA] 

    ou nível de assembly.

     [assembly:RequiresSTA] 

    Não há necessidade de arquivo de configuração. verifique: http://www.nunit.org/index.php?p=requiresSTA&r=2.5

    NUnit 3.0

    Nós migramos para o NUnit 3.0 recentemente e os antigos atributos que estávamos usando não funcionam mais. Nossos testes usaram uma mistura de [STAThread] e [RequiresSTA] como na resposta de mas_oz2k1 acima. STAThread estava dando erros de compilation desde que ele não foi mais encontrado e o RequiresSTA estava dando avisos porque ele foi preterido.

    O New Deal parece estar usando o seguinte:

    Nível de assembly

     [assembly: Apartment(ApartmentState.STA)] 

    Nível de class

     [TestFixture] [Apartment(ApartmentState.STA)] 

    Nível do Método

     [Test] [Apartment(ApartmentState.STA)] 

    Tentar encontrar essa informação me levou a uma estrada escura onde as pessoas estavam modificando seu código de teste usando uma class chamada CrossThreadTestRunner. Esta foi a solução em 2004, presumo, antes que essas classs de atributos fossem criadas.

    No NUnit 2.6.1+ você pode usar o sinalizador de linha de comando / apartment = STA :

     NUnit-Console version 2.6.3.13283 Copyright (C) 2002-2012 Charlie Poole. Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov. Copyright (C) 2000-2002 Philip Craig. All Rights Reserved. Runtime Environment - OS Version: Microsoft Windows NT 6.1.7601 Service Pack 1 CLR Version: 4.0.30319.18052 ( Net 4.5 ) NUNIT-CONSOLE [inputfiles] [options] Runs a set of NUnit tests from the console. You may specify one or more assemblies or a single project file of type .nunit. Options: ... /apartment=X Apartment for running tests: MTA (Default), STA ...