Se você estiver ficando sem espaço de heap durante a execução do teste JUnit infalível (ou à prova de falhas), alterar MAVEN_OPTS pode não ajudá-lo. Continuei tentando configurações diferentes no MAVEN_OPTS sem sorte até encontrar este post que corrigiu o problema.
Basicamente, os JUnits entram em seu próprio ambiente e ignoram as configurações em MAVEN_OPTS. Você precisa configurar o surefire em seu pom para adicionar mais memória para os JUnits.
Esperançosamente, isso pode economizar algum tempo para outra pessoa!
Edit: Copiando solução do blog de Keith Chapman apenas no caso de o link quebrar algum dia:
<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>
Atualização (31/05/2017): Obrigado a @johnstosh por apontar isso - o infalível evoluiu um pouco desde que coloquei esta resposta lá. Aqui está um link para a documentação e um exemplo de código atualizado (a linha arg ainda é a parte importante para esta questão):
<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>