2017-01-26 9 views
0

Я создал класс с атрибутом 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 имеет набор группировок в: Проекты и пространства имен. Однако, если я использую этот класс экземпляра, Resharpers Unit Test Session говорит, что:

Игнорируется: Тест должен быть запущен явно

Даже попытался запустить эти тесты с 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 не изолировано к одному испытанию. Это то, о чем вы должны знать или компенсировать.