2013-11-20 1 views
2

NUnit тесты различных сборок собираются и выполняются в TestSuite. TestSuites - это проект *.nunit, созданный с помощью NUnit GUI-runner.NUnit, как мне выполнить источник до и после запуска набора тестов

Для конкретных целей тестирования мне необходимо выполнить сценарий до и после выполнения всех тестов в пределах этого теста .nunit TestSuite.

Как я могу достичь этого, сохраняя уверенность, что сценарий не выполняется где-то посередине TestSuite. Порядок выполнения тестовых случаев!


Состав:

TestSuite_AllTests.nunit 
    -> ### Run Script BEFORE ### 
    -> Assembly1.Test 
     -> TestClass1 
      -> TestCase1 
      -> TestCase2 
     -> TestClass2 
      -> TestCase1 
      -> TestCase2 
    -> Assembly2.Test 
     -> TestClass1 
      -> TestCase1 
      -> TestCase2 
    -> ### Run Script AFTER ### 

ответ

2

Определите ваш Suite, а затем добавить два метода с атрибутами класса:

  • [TestFixtureSetUp] для кода, выполненных до пакета,
  • [TestFixtureTearDown] для кода, выполняемого после набора.

Пример кода:

public class AllTests 
{ 
    [TestFixtureSetUp] 
    public void Setup() 
    { 
     Console.WriteLine("### Run Script BEFORE ###"); 
    } 

    [TestFixtureTearDown] 
    public void Teardown() 
    { 
     Console.WriteLine("### Run Script AFTER ###"); 
    } 

    [Suite] 
    public static IEnumerable Suite 
    { 
     get 
     { 
      var suite = new ArrayList(); 
      suite.Add(new Assembly1.TestClass1()); 
      suite.Add(new Assembly1.TestClass2()); 
      suite.Add(new Assembly2.TestClass1()); 
      return suite; 
     } 
    } 
} 

Затем запустить NUnit графический интерфейс или NUnit консоли с помощью /крепление: командной строки параметр.

Например:

nunit-console /fixture:NUnit.Tests.AllTests nunit.tests.dll 

Выход для выше код будет следующим:

### Run Script BEFORE ### 
***** Assembly1.TestClass1.Test1 
***** Assembly1.TestClass1.Test2 
***** Assembly1.TestClass2.Test1 
***** Assembly1.TestClass2.Test2 
***** Assembly2.TestClass1.Test1 
### Run Script AFTER ### 

Однако, вы не можете сохранить такой люкс, как .nunit файл.

Как было отмечено на NUnit Suite документации:

поддержка NUnit для определяемых пользователем Suites в настоящее время имеет два ограничения:

  1. Это не представляется возможным включать отдельные случаи испытания непосредственно в люксе с использованием новый подход. Любой, кто хочет это сделать, должен будет использовать старый подход и создать объект, полученный из NUnit.Core.TestCase. Это не рекомендуется, так как для этого требуется ссылка на ядро ​​ .
  2. Люксы в настоящее время не отображаются в Gui или автоматически запускаются либо бегуном, когда они встречаются. Историческая цель Механизм Suite должен был обеспечить способ агрегирования тестов на верхнем уровне каждого прогона. Следовательно, они поддерживаются только при использовании с опцией/fixture на консоли или в командной строке gui.

Подходы к устранению этих ограничений расследуются как часть планирования будущих выпусков NUnit в качестве .

Смежные вопросы