2010-08-13 3 views
6

Есть ли хороший и простой способ заставить NUnit убить тест, который занимает больше определенного времени?NUnit: тест прерывания, если требуется слишком много времени

В идеале это может не только убить домен приложения, в котором выполнялся тест, но и все дочерние процессы, с которых начался тест.

ответ

7

Если вы используете NUnit 2.5, вы можете использовать атрибут Timeout, чтобы выполнить тест после определенного количества времени. К сожалению, вам нужно будет самостоятельно очистить все ресурсы - например, в методе TearDown проверьте, запущены ли процессы и убивают их и т. д.

0

Это похоже на пробный запах. На мой взгляд, с настройкой тайм-аута вы пытаетесь бороться с симптомом. Единичные тесты должны быть быстрыми и воспроизводимыми (также в скорости).

Почему тест длится так долго? Это даже случайное «взятие долго» (иногда выполняется быстро, иногда нет)?

+0

Он сказал, что ребенок обрабатывает. Я думаю, что дочерний процесс терпит неудачу так, как он не может легко обнаружить. – Rup

+1

В настоящее время это всегда занимает некоторое время. Пока он не зафиксирован (на это потребуется время), я могу либо отключить его, либо сделать его неудачным с тайм-аутом. –

+2

Дело в том, что тест НЕИСПРАВНОСТИ, если он занимает слишком много времени - он быстро проверяет аппаратные тесты. Что делать, если какой-то код имеет бесконечный цикл - независимо от того, насколько быстро все это происходит, вы хотите, чтобы этот код быстро сработал и не повесить сервер сборки ... – BrainSlugs83

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