junit: влияние forkMode = «once» на корректность теста

Я бы хотел сократить время, которое требуется нашей сборке (с использованием ant) ​​на выполнение тестов. В настоящее время я использую стандартный forkMode , который разветвляет новую виртуальную машину для каждого тестового класса ( perTest ).

Я собираюсь переключиться на forkMode = "once" , но я не уверен, свяжет ли это каким-то образом тесты и, возможно, даст мне ложноположительные и / или ложноотрицательные результаты после выполнения моих тестов.

Вопросы:

  1. Будет ли каждый тестовый пример получать новый ClassLoader , чтобы все статические ссылки из предыдущих запусков больше не были доступны / не видны?

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

  3. А как насчет сборки / завершения сборки мусора, запускаются ли они после каждого теста? (Я не полагаюсь на них, но я просто хочу получить полную картину)


ОБНОВЛЕНИЕ

Согласно текущим ответам кажется, что junit всегда использует один загрузчик классов между всеми тестовыми примерами на виртуальную машину / вилку, когда используя forkMode. (так что forkMode = "once" действительно означает, что для всех тестов существует один загрузчик классов)

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

20
задан MRalwasser 12 June 2011 в 14:17
поделиться