java 在Eclipse中的单独JVM中运行每个JUnit测试?

bvuwiixz  于 2023-06-28  发布在  Java
关注(0)|答案(3)|浏览(118)

我有一个项目,在大约200个测试类中有近500个单独的测试。这些测试中的一些在完成后没有很好地拆除它们自己的状态,在Eclipse中,这会导致一些测试失败。当通过Ant从命令行运行测试套件时,所有测试都通过了。
我可以在Eclipse中以某种方式启用“测试隔离”吗?我不介意它需要更长的时间运行。
从长远来看,我会清理那些行为不端的测试,但在短期内,我希望测试能够正常工作。

oxosxuxt

oxosxuxt1#

如果您在Eclipse中使用Ant,您可以设置JUnit任务,为每个测试派生一个新的JVM进程,从而提供隔离。
http://ant.apache.org/manual/Tasks/junit.html

ql3eal8s

ql3eal8s2#

我也有类似的需求,并开发了small maven plugin Jute,它已经在maven central上发布。它为每个JUnit测试方法启动外部JVM进程。

yi0zb3m4

yi0zb3m43#

下面是我发现的一个解决方案,它可以在每个测试类自己的JVM中执行:

<plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${maven-surefire-plugin.version}</version>
                <configuration>
                    <forkCount>1</forkCount>
                    <reuseForks>false</reuseForks>
                </configuration>
            </plugin>

forkCount=1/reuseForks=false在其自己的JVM进程中一个接一个地执行每个测试类。它为测试执行创建了最高级别的分离,但它也可能为您提供所有可用选项中最长的执行时间。把它当作最后的手段。[ 1 ]
这解决了我在intellij之外直接使用mvn test运行测试时的问题,不幸的是IntelliJ不尊重这一点。

相关问题