Подтвердить что ты не робот

Выполняет ли JUnit тестовые примеры последовательно?

В этом сообщении я задал небольшой вопрос как часть более серьезной проблемы. Поскольку я еще не получил ответов, я задал свой вопрос здесь:

Можно ли предположить, что JUnit последовательно выполняет тестовые примеры: завершение тестового примера начинается с следующего запуска. Различия между версиями JUnit (мой приоритет - JUnit4)? А если нет, есть ли простой способ заставить JUnit последовательно выполнять тесты?

Спасибо

4b9b3361

Ответ 1

Да, по умолчанию я считаю, что он запускает тесты последовательно.

JUnit 4.6 представила экспериментальный ParallelRunner для запуска тестов параллельно - я не знаю его текущего состояния. Я ожидал бы, что parallelism останется функцией "поменять" по умолчанию. (Судя по другим ответам, похоже, что теперь здесь остаться, но в несколько иной форме - и все же отказаться.)

Ответ 2

Параллельное выполнение тестов поддерживается с JUnit 4.7. Но, насколько я знаю, это никогда не выполняется автоматически, вам необходимо настроить его, например. как здесь: http://java.dzone.com/articles/running-junit-tests-parallel

Но не забывайте, что:

Хорошие автоматизированные тесты должны быть независимыми, изолированными и воспроизводимыми, что делает их идеальными кандидатами для одновременного запуска.

Я не знаю, почему вы спрашиваете, но если вышеуказанные критерии не выполнены, вы можете подумать о своем тестовом дизайне.

Ответ 3

Сильное и разумное предположение: да, JUnit по умолчанию имеет однопоточность.

В противном случае не было бы известно, если тест завершился неудачно, потому что код был сломан или он потерпел неудачу из-за проблем с concurrency, если некоторые тесты выполнялись параллельно.

Ответ 4

Да,

А также подумайте о @before и @after там, где у вас может быть код, который восстанавливает состояние для следующего запуска теста.

Ответ 5

Да. Как уже упоминалось в комментариях, вы должны тщательно планировать настройку и отключение тестового набора (все надклассы влияют на эти действия), а также на установку и отключение тестирования.

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

Ответ 6

С моим опытом я могу сказать, что мы можем сериализовать тесты в классе, назвав имя метода, в котором есть Test. например:

@Test

public ..... firstTest ()
{

}

@Test

public .... thirdTest()
{

}

@Test

public....secondTest()
{

}

Заказ firstTest, thirdTest, secondTest