2015-02-25 2 views
0

У меня есть проект с более чем 1000 модульными тестами и думал ускорить сборку, используя опцию параллельного параллелирования xctool.Тестовый сбой при запуске с XCTool с logicTestBucketSize

Итак, я включил это и установил логикуTestBucketSize на 50. Пробный прогон, но некоторые из них терпят неудачу, которые не терпят неудачу, если вы не используете эту опцию.

Мой вопрос: ведра работают независимо друг от друга в собственной песочнице или же они имеют общую переменную, которую может установить единичный тест? что может объяснить некоторое перекрестное загрязнение между испытаниями

ответ

1

Да. При параллельном тестировании xctool будет запускать каждый цикл тестов в одном процессе и одновременно запускать несколько ведер в разных процессах. Кроме того, вы можете выбрать, будет ли bucketing выполняться на основе случая или класса с помощью -bucketBy class. Вероятно, вы должны использовать класс, если у вас нет очень больших тестовых классов со многими тестовыми примерами.

Ваши тесты могут потерпеть неудачу сейчас, хотя это не было раньше, потому что:

  1. Тестовый пример зависит от глобального состояния, созданного в предыдущем тесте, даже из другого тестового класса, до тех пор, как это сгруппированы в один и тот же двоичный файл. Этот тест завершится неудачно, так как порядок выполнения тестов может отличаться или вообще не работать.
  2. Тест изменяет глобальное состояние и приводит к неудачам последующих тестов. Возможно, это не было проблемой, потому что этот тест выполнялся после того, как другие тесты, которые могут быть затронуты, уже запущены.

Хороший способ борьбы с первым типом сбоев запускается с размером 1 ковша (либо в режиме поэтапного типа, либо в режиме ведра в зависимости от того, в каком режиме вы будете работать позже) ,

+0

спасибо. я начну использовать параметр -bucketby – otusweb

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