我有一个 Spring Boot(不是 Web)项目,其中包含生成子进程的单元测试。主线程完成后,这些过程需要一些时间才能完成。
测试是通过 GitHub 操作使用
mvn package
命令完成的。
此命令将引发错误
Error: Surefire is going to kill self fork JVM. The exit has elapsed 30 seconds after System.exit(0)
。
正如类似问题和maven-surefire-plugin文档中提到的,我必须设置
surefire.exitTimeout
或<forkedProcessExitTimeoutInSeconds>
属性,并以秒为单位增加值。但目前还不清楚我可以在哪里设置该属性。
我尝试了以下方法:
mvn package -DforkedProcessTimeoutInSeconds=60
mvn package -Dsurefire.timeout=60
pom.xml
:<project>
<properties>
<forkedProcessTimeoutInSeconds>60</forkedProcessTimeoutInSeconds>
<surefire.timeout>60</surefire.timeout>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<additionalProperties>
<forkedProcessTimeoutInSeconds>60</forkedProcessTimeoutInSeconds>
<surefire.timeout>60</surefire.timeout>
</additionalProperties>
<arguments>
<argument>--forkedProcessTimeoutInSeconds=60</argument>
<argument>--surefire.timeout=60</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
</project>
但是上面的所有选项都会被
maven-surefire-plugin
忽略。
您能否建议我如何增加超时时间?
我的pom.xml:https://github.com/yvasylev/reddit-telegram-forwarder/blob/3.0.0/pom.xml
我找到了解决方案:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<forkedProcessExitTimeoutInSeconds>60</forkedProcessExitTimeoutInSeconds>
</configuration>
</plugin>
</plugins>
</build>