Nếu bạn sắp hết dung lượng heap trong quá trình chạy thử nghiệm JUnit chắc chắn (hoặc an toàn dự phòng), việc thay đổi MAVEN_OPTS có thể không giúp ích cho bạn. Tôi tiếp tục thử các cấu hình khác nhau trong MAVEN_OPTS mà không gặp may cho đến khi tôi tìm thấy bài đăng này đã khắc phục sự cố.
Về cơ bản, các JUnits chuyển sang môi trường riêng của chúng và bỏ qua các cài đặt trong MAVEN_OPTS. Bạn cần cấu hình chắc chắn trong pom của mình để thêm bộ nhớ cho JUnits.
Hy vọng rằng điều này có thể tiết kiệm thời gian cho người khác!
Chỉnh sửa: Sao chép giải pháp từ blog của Keith Chapman đề phòng trường hợp liên kết bị hỏng vào một ngày nào đó:
<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>
Cập nhật (31/5/2017): Cảm ơn @johnstosh đã chỉ ra điều này - chắc chắn là đã phát triển một chút kể từ khi tôi đưa ra câu trả lời này. Đây là một liên kết đến tài liệu của họ và một mẫu mã được cập nhật (dòng arg vẫn là phần quan trọng cho câu hỏi này):
<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>