gpt4 book ai didi

java - 使用 fork ="yes"forkmode ="perTest"运行 junit 的 Ant 脚本不会创建单独的虚拟机

转载 作者:太空宇宙 更新时间:2023-11-04 13:53:38 26 4
gpt4 key购买 nike

我对 JUnit 比较陌生。我们的 JUnit 项目的要求是,如果被测试的应用程序重新启动,我们需要创建一个新的 jvm 来运行我们的测试,以便它连接到应用程序。我发现创建单独 JVM 的一种方法是通过 ANT 启动 JUnit 脚本。下面是我正在使用的测试 build.xml

<target name="test" >
<junit printsummary="yes" fork="yes" forkmode="perTest">
<formatter type="plain"/>
<classpath refid="build.class.path" />
<classpath refid="test.class.path" />
<test name="test.HelloworldSuite"/>

我正在打印每个 JUnit 测试中所有正在运行的 java.exe 进程的 PID,以确定是否为每个 JUnit 测试创建单独的 JVM。

Process p = Runtime.getRuntime().exec("cmd.exe /c tasklist /FI \"IMAGENAME eq java.exe\"");
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = in.readLine()) != null)
{
System.out.println(line);
}
in.close();

以上代码始终为 java.exe 任务打印相同的 PID 列表。

我正在尝试做的事情是否缺少某些内容,或者是否有更好的方法来确保每个 JUnit 测试都在单独的 JVM 中执行?

最佳答案

您是否尝试过使用线程属性?默认值为 1,而且似乎必须明确定义要使用的线程数量,即使 fork 设置为 yes。查看手册:https://ant.apache.org/manual/Tasks/junit.html

<target name="test" >
<junit printsummary="yes" fork="yes" forkmode="perTest" threads="5">
....
....
</junit>
</target>

附加说明:这将在线程中执行每个 Test/TestSuite。如果您只有一套要执行,则什么都不会改变。如果您有多个套件,它们将在 x 线程中运行。

关于java - 使用 fork ="yes"forkmode ="perTest"运行 junit 的 Ant 脚本不会创建单独的虚拟机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30051293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com