Ошибка OutOfMemoryError вызвана слишком большим количеством выводимых результатов тестов.
У меня была та же проблема, когда один тест показывал слишком много.
Я не знаю, происходит ли тот же эффект, когда несколько тестов хороши для себя, но выдают слишком много общего результата при совместном выполнении. Но я предполагаю, что память освобождается после каждого теста.
Анализ
Мой анализ heapdump показал, что рассматриваемый класс TeeStream
, кажется, разветвляет вывод в два потока (таким образом, "T"). У меня была иерархия TeeStreams
, ссылающаяся друг на друга, в то же время у меня была собственная Printer
. Ваша трассировка стека также указывает на то же самое.
Это означает, что каждый поступающий выход распространяется через эту иерархию и печатается несколько раз. Таким образом, размер принтеров резко увеличился, чем ниже они были. Это, конечно, очень плохо и объясняет высокое потребление памяти.
Мне кажется, это ошибка в Surefire.
Удобный обходной путь
В качестве обходного пути я уменьшил печатную продукцию моих тестов.
Более устойчивые решения
Если это не вариант для вас, вы должны настроить Surefire (в вашем .pom) для работы в раздвоенном режиме. Я уверен, что передача Xmx в качестве аргумента для увеличения размера кучи также возможна там.