2016-03-15 1 views
1

Я в настоящее время борется с довольно сложной проблемой: я работаю над проектом, который содержит около 8 тысяч единичных тестов (для выполнения довольно сильной машины требуется 15 минут), а тест, который в настоящее время терпит неудачу, не терпит неудачу когда вы запускаете их или владеете (или при запуске с другими неудавшимися тестами), поэтому я думаю, что есть какой-то тест, который проходит, но оставляет какой-то беспорядок.Как найти тест, который влияет на выполнение других тестов?

В настоящее время я пытаюсь запустить эти тесты с тестами от конкретных пакетов, используя Gradle:

test { 
    filter { 
     includeTestsMatching 'some.package.*' 
     includeTestsMatching '*Test1' 
     includeTestsMatching '*Test2' 
    } 
} 

Однако есть некоторые вещи, которые я не знаю, как контролировать, как порядок выполнения тестовых классов (если у кого-то есть идея, как изменить порядок, который также поможет мне).

Возможно, кто-то уже знает какой-то хороший процесс поиска тестов, влияющих на другие тесты?

+2

единичный тест никогда не должен влиять на функционирование или результат другого модульного теста – Stultuske

+0

@Stultuske of the course :), но я не могу его исправить, если я не могу его найти:/ – korda

+2

Использовать [метод bisection] (https: // en.wikipedia.org/wiki/Bisection_method), боюсь. Если весь тест всегда терпит неудачу, тогда проверка выполнения выполнения, вероятно, будет одинаковой каждый раз. В качестве альтернативы, если вы можете отслеживать момент времени, когда тест начал терпеть неудачу, это может быть ключом к решению этого. –

ответ

0

Предполагая JUnit тесты, а затем:

  1. определяют test suite, который определяет порядок тестовых классов
  2. убедитесь, что вы используете JUnit 4.11 или более поздней версии, чтобы получить deterministic method order
  3. запускать только тестовый набор из (или прямо от вашего идеала)
  4. отрегулируйте порядок, отредактировав набор, пока не воспроизведете проблему
Смежные вопросы