Teamcity перезапустил определенные неудачные нестабильные тесты
У меня есть Teamcity 7.1 и около 1000 тестов. Многие тесты нестабильны и случайно проваливаются. Даже один тест не пройден, вся сборка не пройдена, и запуск новой сборки занимает 1 час.
Поэтому я хотел бы иметь возможность настроить Teamcity на повторный запуск неудачных тестов в течение той же сборки определенное количество времени. Любой успех теста должен рассматриваться как успех, а не провал. Является ли это возможным?
Также теперь тесты в каком-то модуле не пройдены Teamcity не переходит к следующему модулю. Как это исправить?
3 ответа
С уважением, я думаю, у вас может быть эта проблема не с той стороны. Случайно провальный тест не дает вам никакого значения в качестве показателя детерминированного поведения. Либо исправьте случайность (с помощью насмешек и т. Д.), Либо игнорируйте тесты.
Если вам абсолютно необходимо, я бы поставил циклы вокруг вашего тестового кода и поймал, скажем, 5 сбоев, прежде чем выдать исключение как "подлинный" сбой. Примерно такой пример C# подойдет...
public static void TestSomething()
{
var counter = 0;
while (true)
{
try
{
// add test code here...
return;
}
catch (Exception) // catch more specific exception(s)...
{
if (counter == 4)
{
throw;
}
counter++;
}
}
}
Хотя я ценю проблемы, которые могут возникнуть при тестировании асинхронного кода, я использую @JohnHoerr для этого, вам действительно нужно исправить тесты.
Функция повторного запуска тестов является частью плагина Maven Surefire, если вы выполните mvn -Dsurefire.rerunFailingTestsCount=2 test
тогда тесты будут выполняться до тех пор, пока они не пройдут или число повторов не будет исчерпано.
Конечно, -Dsurefire.rerunFailingTestsCount
может быть использован в TeamCity или любом другом CI Server.
Смотрите: http://maven.apache.org/surefire/maven-surefire-plugin/examples/rerun-failing-tests.html