testng是否运行多线程?

时间:2013-02-19 14:55:31

标签: java multithreading maven-3 testng

我有一个java maven项目,我想用多线程测试。我在src / test中有testng.xml,maven surefire插件配置为使用它。就像这个页面一样: http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html

编辑:添加了surefire pom条目

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-surefire-plugin</artifactId>
 <version>2.12.4</version>
 <configuration>
  <suiteXmlFiles>
   <suiteXmlFile>src/test/testng.xml</suiteXmlFile>
  </suiteXmlFiles>
 </configuration>
</plugin>

我正在使用surefire 2.12.4。

这是我的testng.xml文件

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
 <suite name="Testng" parallel="methods" thread-count="3">
  <test name="all" annotations="JDK5">
    <packages>
        <package name="my.package.*"/>
    </packages>
  </test>
</suite>

在几个测试方法中,我有一个print语句:

System.out.println(Thread.currentThread().getName());

每次运行时总是具有相同的输出(pool-1-thread-1)。如果testng并行运行,那么就会运行不同的线程。

我的问题是:为什么testng没有运行多线程?有没有更好的方法来检查testng是否正在运行多线程?

编辑:课程或方法

当我使用线程运行时,每个测试类似乎都在它自己的线程中运行,但不是每个方法都运行。在testng.xml中我设置了parallel =“methods”,因此它应该按照方法执行。每种方法都不能吗?

2 个答案:

答案 0 :(得分:0)

我找到了答案,我没有给它足够的线程。由于我的项目有很多测试,因此testng不会为每个方法创建新的线程。我将其更改为10个线程并修复了它。

答案 1 :(得分:0)

在这种情况下,TestNG不会并行运行。您需要定义ThreadLocal以在线程中定义不同的浏览器。 使用:ThreadLocal,并在不同的实例中定义浏览器。在这种情况下,您将获得不同的浏览器ID ..