Java 在Ant中运行JUnit测试:为什么分叉到单独的VM?

Java 在Ant中运行JUnit测试:为什么分叉到单独的VM?,java,ant,junit,Java,Ant,Junit,我对Ant和JUnit比较陌生 通过阅读Ant手册和在Google上搜索等等,我了解了在运行Junit测试时如何进入一个单独的VM,但不知道为什么这是一个好的或坏的做法 到目前为止,我已经找到了以下答案: 在单独的VM中运行测试将隔离测试,并防止每个测试受到VM范围的系统属性的影响 分叉还允许使用[编辑]将新参数传递给VM 运行单独的虚拟机可能会降低性能时间 这就是它的全部吗?当您使用分叉VM运行单元测试时,您可以向它传递新参数。例如,运行测试可能需要比编译更多的内存,您可能希望在不同的目录

我对Ant和JUnit比较陌生

通过阅读Ant手册和在Google上搜索等等,我了解了在运行Junit测试时如何进入一个单独的VM,但不知道为什么这是一个好的或坏的做法

到目前为止,我已经找到了以下答案:

  • 在单独的VM中运行测试将隔离测试,并防止每个测试受到VM范围的系统属性的影响
  • 分叉还允许使用
    [编辑]将新参数传递给VM
  • 运行单独的虚拟机可能会降低性能时间

这就是它的全部吗?

当您使用分叉VM运行单元测试时,您可以向它传递新参数。例如,运行测试可能需要比编译更多的内存,您可能希望在不同的目录中运行测试,或者可能将不同的java参数传递给新的VM。如果您在Ant手册中查找,您可以看到,如果您不在fork模式下,许多参数将被忽略。

感谢您的回复。它证实了我在其他网站上的发现。我仍然想知道——除了VM隔离、传递新参数和性能时间考虑之外,是否还有其他原因需要分叉或不分叉到单独的VM中?(我还发现,在使用Cobertura时,建议使用单独的VM。)不分叉JUnit运行有一个优点:因为运行在同一个VM中,如果测试超时,VM将不会终止,这意味着拆卸过程将完成。有关详细信息,请参阅手册页中的分叉测试和拆卸。分叉JUnit测试的一个原因是拥有一个干净、独立的JUnit测试环境,该环境没有被Ant本身的需求所污染。例如,您可能不希望在系统测试中包含Ant运行时库。默认情况下,每个测试将在自己的JVM中运行。您可以通过将“forkmode”设置为
一次来更改此设置。如果测试需要很长的时间,这将非常有用。当您执行任何类型的代码覆盖检测时,都需要一个单独的VM。我们使用JaCoCo。几年来,科贝图拉一直处于断断续续的状态。它最近才开始再次更新。我喜欢JaCoCo,因为JaCoCo只对正在运行的JUnit进行测试,而不是编译单元测试本身。感谢您的帮助