Я хотел бы сократить время, затрачиваемое нашей сборкой (используя ant) для запуска тестов.
В настоящее время я использую по умолчанию forkMode
, который открывает новый vm для каждого тестового класса (perTest
).
Я собираюсь переключиться на forkMode="once"
, но я не уверен, что это как-то сочтет тесты и, возможно, даст мне ложные положительные и/или ложные отрицательные результаты после запуска моих тестов.
Вопросы:
-
Будет ли каждый тестовый пример получить новый ClassLoader, чтобы все статические ссылки из предыдущих прогонов больше не были доступны/видимы?
-
Существуют ли другие вещи, которые приводят к тестированию зависимости/сочетания методов тестирования, которые могут изменить поведение (помимо загрузки загружаемой библиотеки, которую я не использую)
- Как насчет сбора/завершения сборки мусора, они запускаются после каждого теста? (Я не полагаюсь на них, но я просто хочу получить полную картину).
UPDATE
В соответствии с текущими ответами кажется, что junit всегда использует один загрузчик классов между всеми тестовыми примерами на vm/fork при использовании forkMode. (поэтому forkMode = "once" действительно означает наличие одного загрузчика классов для всех тестов)
У этого есть много преимуществ (более быстрые тесты и может привести к сбоям тестов из-за статической связи), но также и некоторые недостатки (статическая связь, которая будет работать только при использовании общего загрузчика классов → false positive)