Метод настройки набора тестов выполняется один раз для каждого теста или только один раз для всех? - PullRequest
5 голосов
/ 29 апреля 2010

Я знаю, что ответ может отличаться для каждого теста. Но для тех, кого вы знаете, что должно произойти?

Ответы [ 4 ]

4 голосов
/ 30 апреля 2010

В MSTest у вас есть TestInitializeAttribute

При запуске в нагрузочном тесте метод, отмеченный этим атрибутом, будет запускаться один раз для каждой виртуальной пользовательской итерации в тесте. Если вам нужно выполнить операции инициализации один раз, которые применяются ко всему тесту, используйте ClassInitializeAttribute .

AssemblyInitializeAttribute запускается один раз для всех тестов во всех классах.

4 голосов
/ 29 апреля 2010

В NUnit у вас есть TestFixtureSetUp, который запускается только один раз перед запуском всех тестов в приборе, и SetUp, который запускается перед запуском каждого метода теста.

3 голосов
/ 29 апреля 2010

Это, естественно, зависит от фреймворков, и для конкретных ответов на этот вопрос вы должны проверить соответствующую документацию.

Установите методы для испытаний, или приборы полезны, но ими не следует злоупотреблять. Если в модульных тестах есть сложные методы настройки , вы можете утверждать, что они в большей степени являются интеграционными тестами и поэтому должны быть реорганизованы. Сложная настройка теста - это запах кода. С другой стороны, правильное использование методов настройки может уменьшить дублирование и сделать тесты более читабельными и обслуживаемыми.

1 голос
/ 30 апреля 2010

В junit4 у вас есть аннотации, доступные для обозначения обоих способов настройки / разрыва. Вот резюме:

  • текущая настройка перед каждым набором тестов использование @BeforeClass
  • запущенный демонтаж после каждого набора тестов использование @AfterClass
  • запуск настройки перед каждым методом тестирования в вашем наборе @Before
  • запущенный демонтаж после каждого метода тестирования в вашем наборе @After
...