2017-01-26 3 views
0

Ich habe eine Klasse mit dem Attribut SetupFixture erstellt, um eine einmalige Einrichtung für meine Integrationstest-Assembly zu erhalten.SetupFixture erlaubt keine gruppierten Testläufe in Resharper

[SetUpFixture] 
public static class IntegrationTestsBase 
{ 
    public static IKernel Kernel; 

    [SetUp] 
    public static void RunBeforeAnyTests() 
    { 
     Kernel = new StandardKernel(); 
     if (Kernel == null) 
      throw new Exception("Ninject failure on test base startup!"); 

     Kernel.Load(new ConfigModule()); 
     Kernel.Load(new RepositoryModule()); 
    } 

    [TearDown] 
    public static void RunAfterAnyTests() 
    { 
     Kernel.Dispose(); 
    } 
} 

Resharpers Einheit Test Sitzungsfenster hat eine festlegen Gruppierung: Projekte und Namensräume. Resharpers Unit Test Session aber wenn ich diese Instanz-Klasse verwenden, sagt, dass:

Ignored: Test sollte ausdrücklich

Auch laufen versucht, diese Tests mit MSTest läufer laufen:

Ergebnis Nachricht: IntegrationTestsBase ist eine abstrakte Klasse.

Ich habe versucht, diese Klasse in einen Namespace zu packen, aber nichts geändert. Wenn ich einzelne Tests nacheinander ausfühle, wird es ausgeführt, aber ich kann sie nicht alle über die GUI ausführen.

Wie kann ich dieses Problem beheben, um alle in dieser Baugruppe enthaltenen Tests ausführen zu können?

Mit NUnit 2.6.4, ReSharper 2015,2 und VS2015 Update 1.

Antwort

1

Ihre Testclass muss nicht statisch sein, wie es in der Regel nicht instanziiert werden kann durch die Testframework und statische Klassen instanziiert wird.

Die schnellste Lösung ist, das Schlüsselwort static außer Ihrer Kernel Eigenschaft zu entfernen.

[SetUpFixture] 
public class IntegrationTestsBase 
{ 
    public static IKernel Kernel; 

    [SetUp] 
    public void RunBeforeAnyTests() 
    { 
     Kernel = new StandardKernel(); 
     if (Kernel == null) 
      throw new Exception("Ninject failure on test base startup!"); 

     Kernel.Load(new ConfigModule()); 
     Kernel.Load(new RepositoryModule()); 
    } 

    [TearDown] 
    public void RunAfterAnyTests() 
    { 
     Kernel.Dispose(); 
    } 
} 

Denken Sie daran, dass alles, was Sie in Kernel gesetzt wird nun geteilt also, wenn dieser Test mit mehreren Threads ausgeführt wird, wird die Klasse in Kernel nicht auf einen einzigen Test isoliert. Was Sie beachten oder kompensieren sollten.

Verwandte Themen