2017-01-26 38 views
0

我haved創建的類與SetupFixture屬性根據需要爲我的集成測試組件具有一次性設置。SetupFixture不允許分組測試運行在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單元測試會話窗口的分組設置爲:Projects和Namespaces。但是,如果我用這個實例類,Resharpers單元測試會話說:

忽略:測試應該明確運行

即使試圖運行這些測試與MSTest的亞軍:

結果消息:IntegrationTestsBase是一個抽象類。

我試圖將這個類封裝到一個名稱空間,但沒有任何更改。如果我逐個運行單個測試,它會運行,但是我無法從GUI運行它們。

我怎樣才能解決這個問題,以便能夠運行所有測試包括在這個大會?

使用NUnit 2.6.4,ReSharper的2015.2和VS2015更新1.

回答

1

您TestClass中並不需要,因爲它得到由Testframework實例和靜態類通常不能被實例化是靜態的。

最快的解決方法是刪除static關鍵字,除了從您的Kernel財產。

[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(); 
    } 
} 

請記住,不管你把Kernel現在共享,所以如果這個測試是多線程運行,在Kernel類不是孤立的單個測試。你應該知道或補償哪件事。

相關問題