Пропустить юнит-тесты, которые занимают много времени - PullRequest
6 голосов
/ 21 сентября 2010

Я работаю с MS-Test для написания своих модульных тестов.большинство моих тестов имеют продолжительность менее 0,1 секунды.Я хочу как-то сказать VS "игнорировать тесты, которые долго выполняются, когда я запускаю тесты вручную, а когда вы запускаете их в сборке, не игнорируйте их.

Я знаю, что в nunitесть «явный» атрибут, который будет запускать тест, только если вы выберете его явно. Я думаю, что это может помочь, но не уверен.

Помогите пожалуйста

Ответы [ 4 ]

2 голосов
/ 21 сентября 2010

Размышление над этим вопросом в не зависящем от языка, не зависящем от фреймворка виде приводит к тому, что то, о чем вы просите, является несколько загадкой:

Инструмент тестирования не будет знать о времени выполнения какого-либо из модульных тестов, пока они не будут запущены; потому что это зависит не только от инструмента тестирования и самих тестов, но и от тестируемого приложения. Решением этой проблемы было бы сделать такие вещи, как установление лимита времени. Если вы сделаете это, тогда напрашивается вопрос, когда по истечении времени ожидания теста он будет пройден, провален или, возможно, попадет в какую-то другую (третью) категорию? ... загадка!

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

  • Набор дыма теста;
    • т.е. тесты, которые вы хотели бы выполнять в первую очередь все время. Если что-то из этого не получится, вы не захотите выполнять какие-либо тесты. Поставьте в эту группу только действительно фундаментальные тесты.
  • A минимальный набор тестов;
    • Для вашего конкретного требования это будет набор тестов, содержащий все «быстрые» или «быстрые» тесты, и вы определяете, какие из них.
  • A комплексный набор тестов;
    • Тесты, которые не относятся ни к одной из других категорий. Для вашего конкретного требования это будут тесты, которые "медленные" или "длинные" .

При запуске ваших тестов вы можете выбрать, какие из этих поднаборов тестов запустить, возможно, сконфигурировав их в какой-либо форме скрипта.

Я использую этот подход с большим эффектом в автоматизированном тестировании (интегрирован в систему непрерывной интеграции). Я делаю это, имея скрипт, который, в зависимости от входных параметров, решает либо выполнить только тесты smoke плюс тесты минимальный ; или, альтернативно, тесты дым , тесты минимальный и комплексные тесты (т.е. все они).

НТН

0 голосов
/ 25 сентября 2010

Вам следует настроить тесты таким образом, чтобы они выполнялись на вашем сервере после выполнения фиксации, а затем уведомлять разработчика (возможно, по электронной почте?) О любых неудачных действиях.

Таким образом, тесты запускаются независимо от того,их продолжительности, но не тратится время программиста.

0 голосов
/ 21 сентября 2010

Да, как это

<TestMethod(), Timeout(1000)>
    Public Sub OutputWebservice_SubmitOutputJob_SubmitEmailJobHF001()
    End Sub
0 голосов
/ 21 сентября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...