¿Hay alguna manera de tener un SetUpFixture que se ejecute una vez por clase en lugar de una vez por espacio de nombres?

Guión
En primer lugar, soy nuevo en las pruebas, así que tengan paciencia conmigo. Dentro de miproyecto de prueba, hay una carpeta Controladores. La carpeta Controllers puede contener ControllerATest.cs, ControllerBTest.cs y ControllerCTest.cs. Como mi espacio de nombres se alinea con la estructura de mi carpeta, todos comparten el espacio de nombres MyProject.Tests.Controllers.

Por lo que he leído en elNUnit SetUpFixture Documentation, una [SetUpFixture] dentro de este espacio de nombres se ejecutará una vezpara todo el espacio de nombres. Es decir, si ejecuto todas las pruebas de mi controlador a la vez, SetUpFixture se ejecutará solo una vez.

Problema
Como dije, cada prueba de controlador comparte un espacio de nombres. SetUpFixtures se aplica a todo el espacio de nombres. ¿Qué pasa si quiero que cada controlador tenga supropio SetUpFixture? Esto es un problema cuando SetUpFixtures se aplica a espacios de nombres completos. Lo que quiero es algo que se ejecute una vez, y no por prueba. Una de las cosas que hago dentro de la configuración de mi SetUpFixture es crear una instancia de un controlador. Claro, podría crear una instancia de los 3 controladores en SetUpFixture, pero esto parece feo cuando tal vez solo estoy probando ControllerC. Eso realmente no parece limpio. Por lo tanto, me gustaría un SetUpFixture que apliquesolamente a la clase en la que aparece, como ControllerCTests.

Por lo que he leído, esta funcionalidad específica parece ser imposible con NUnit. Y si no es posible con NUnit, eso me hace pensar que no es un escenario común. Y si no es un escenario común, estoy haciendo algo mal. Mi pregunta es, ¿qué? Tal vez mi estructura de prueba está desactivada y necesita cambiar. O tal vezes posible con NUnit?

Código
Un ejemplo de mi estructura deseada:

namespace MyProject.Tests.Controllers
{
public class ControllerATests
{
    private static IMyProjectRepository _fakeRepository;
    private static ControllerA _controllerA;

    [SetUpFixture]
    public class before_tests_run
    {
        [SetUp]
        public void ControllerASetup()
        {
            _fakeRepository = FakeRepository.Create();

            _controllerA = new ControllerA(_fakeRepository);
        }
    }

    [TestFixture]
    public class when_ControllerA_index_get_action_executes
    {
        [Test]
        public void it_does_something()
        {
            //
        }

        [Test]
        public void it_does_something_else()
        {
            //
        }
    }
}

public class ControllerBTests
{
    private static IMyProjectRepository _fakeRepository;
    private static ControllerB _controllerB;

    [SetUpFixture]
    public class before_tests_run
    {
        [SetUp]
        public void ControllerBSetup()
        {
            _fakeRepository = FakeRepository.Create();

            _controllerB = new ControllerB(_fakeRepository);
        }
    }

    [TestFixture]
    public class when_ControllerB_index_get_action_executes
    {
        [Test]
        public void it_does_something()
        {
            //
        }

        [Test]
        public void it_does_something_else()
        {
            //
        }
    }
}
}    

Cosas que he probado

Mover cada archivo .cs a su propia carpeta, para que tengan diferentes espacios de nombres. Técnicamente esto resuelve el problema, parece un poco feo tener un montón de subcarpetas con solo 1 elemento en cada una de ellas. Feo, y ya no coincidirá con la estructura de mi proyecto principal que estaba buscando. Pero, tal vez este es el camino a seguir.No instanciar mi controlador en elSetUpFixture Configurar, y en su lugar hacerlo en elAccesorio de prueba Configuración para que se cree una instancia nueva para cada prueba (por ejemplo: 5 pruebas = 5 instancias separadas) en lugar de una vez por clase o espacio de nombres. Aunque parece que si puedo salir con solo crear 1 instancia, debería hacerlo.

Sugerencias?

Respuestas a la pregunta(2)

Su respuesta a la pregunta