Si se está quedando sin espacio de almacenamiento dinámico durante la ejecución de prueba de JUnit infalible (o segura), es posible que cambiar MAVEN_OPTS no le ayude. Seguí probando diferentes configuraciones en MAVEN_OPTS sin suerte hasta que encontré esta publicación que solucionó el problema.
Básicamente, los JUnits se bifurcan en su propio entorno e ignoran la configuración en MAVEN_OPTS. Necesita configurar surefire en su pom para agregar más memoria para los JUnits.
¡Con suerte, esto puede ahorrarle tiempo a alguien más!
Editar: Solución de copia del blog de Keith Chapman en caso de que el enlace se rompa algún día:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkMode>pertest</forkMode>
<argLine>-Xms256m -Xmx512m</argLine>
<testFailureIgnore>false</testFailureIgnore>
<skip>false</skip>
<includes>
<include>**/*IntegrationTestSuite.java</include>
</includes>
</configuration>
</plugin>
Actualización (31/5/2017): Gracias a @johnstosh por señalar esto, surefire ha evolucionado un poco desde que publiqué esta respuesta. Aquí hay un enlace a su documentación y una muestra de código actualizado (la línea arg sigue siendo la parte importante para esta pregunta):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<forkCount>3</forkCount>
<reuseForks>true</reuseForks>
<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
<systemPropertyVariables>
<databaseSchema>MY_TEST_SCHEMA_${surefire.forkNumber}</databaseSchema>
</systemPropertyVariables>
<workingDirectory>FORK_DIRECTORY_${surefire.forkNumber}</workingDirectory>
</configuration>
</plugin>