首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用fork=运行junit的Ant脚本“yes”forkmode="perTest“不创建单独的vm

使用fork=运行junit的Ant脚本“yes”forkmode="perTest“不创建单独的vm
EN

Stack Overflow用户
提问于 2015-05-05 11:08:02
回答 1查看 2.2K关注 0票数 1

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

代码语言:javascript
运行
复制
<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"/>

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

代码语言:javascript
运行
复制
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中执行?

EN

Stack Overflow用户

发布于 2019-02-09 22:54:35

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

代码语言:javascript
运行
复制
<target name="test" >
  <junit printsummary="yes" fork="yes" forkmode="perTest" threads="5">
  ....
  ....
  </junit>
</target>

附加注意:这将在线程中执行每个Test/TestSuite。如果你只有一套套房要执行,什么都不会改变。如果您有几个套件,这些套件将在x线程中运行。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30051293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档