Как изменить порядок тестов NUnit в CCNet?

При непрерывной интеграции имеет смысл сначала повторно запустить неудавшиеся модульные тесты при следующем запуске цикла. Это сокращает цикл обратной связи.

Есть ли какой-нибудь известный способ добиться этого с помощью CCNet и NUnit?

В принципе, CCNet должна иметь «память» о том, какие модульные тесты завершились неудачно, и NUnit нужно было бы проинструктировать запускать их в другом порядке.


person Pieter Venter    schedule 14.10.2010    source источник
comment
Если ваши модульные тесты выполняются так долго, что порядок важности настолько критичен, это может быть признаком того, что они нуждаются в некоторой оценке. Кроме того, запускают ли разработчики модульные тесты на рабочем месте перед регистрацией? Таким образом, они могут решить проблему проактивно, вместо того, чтобы полагаться на сервер сборки.   -  person Aaron McIver    schedule 14.10.2010
comment
Просто чтобы уточнить - порядок не важен для успешной работы модульных тестов. Он вполне может работать в исходном порядке или случайным образом. Сообщество JUnit продемонстрировало, что изменение порядка тестов с непрерывным циклом интеграции имеет свои преимущества. Вы хотите получить обратную связь как можно скорее. Неудачные тесты или новые тесты могут также запускаться первыми, чтобы устранить эту причину.   -  person Pieter Venter    schedule 14.10.2010


Ответы (2)


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

Итак, ответ: нет.

Кстати: Как это могло бы иметь смысл и сократить цикл обратной связи?

Томас

person Thomas Weller    schedule 14.10.2010
comment
Зависимостей нет и не в этом дело. Если вы собираетесь провести 600 тестов, имеет смысл сначала запустить те, которые не дали результатов. - person Pieter Venter; 14.10.2010
comment
Почему? Я не понимаю. Все тесты в любом случае выполняются, и отчет о тестировании ясно показывает, какие из них не прошли. Так почему же порядок имеет значение? - person Thomas Weller; 14.10.2010
comment
Это сэкономит вам немного времени, особенно если у вас есть тысячи модульных тестов, выполнение которых может занять несколько минут. Если один из них выйдет из строя, будет удобнее, если вы в следующий раз запустите сначала неудачные. Часто вы хотите исправить одну и проверить, проходит ли тест сейчас. Просто удобство. - person Pieter Venter; 15.10.2010
comment
Как? Обычно у вас есть CI-сервер, у которого даже нет дисплея, и вы получаете какое-то уведомление о сборке только тогда, когда все будет завершено ... - person Thomas Weller; 15.10.2010
comment
В CI 1.5 есть компонент веб-интерфейса, обеспечивающий базовую обратную связь. Вы можете видеть процесс сборки и выполнения модульного тестирования. - person Pieter Venter; 16.10.2010
comment
О, не знал этого. Я довольно долго работал с CC.Net. В этом особом случае то, что вы думаете, действительно может быть полезно ... - person Thomas Weller; 16.10.2010

Можно было бы запустить командную строку nunit с параметрами. Например, проверьте параметр / запуск:

/run=UnitTests.TestMainProgram.Test_Sum_NegativeValues_ResultCorrect

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

person Cristian T    schedule 12.11.2010